Android Question Background Task goes to sleep

Discussion in 'Android Questions' started by Angel Maza, Feb 9, 2019.

  1. Angel Maza

    Angel Maza Member Licensed User

    I have been using for a while one app (SENDER) that connects to a Bluetooth device and sends data to a second app (RECEIVER) using Broadcast receiver/intents. The SENDER app runs in the background and the RECEIVER app interacts with the User in the foreground. All worked fine until Android 8.0 came around. Now my SENDER app goes to sleep after some time and the Broadcast Receiver task stops. As soon as I bring the SENDER app the Background Task resumes and the RECEIVER app gets the data again.

    How can I stop the SENDER app being put to sleep by the Android OS in an effort to save power?

    Attached is a screen shot that shows stopping of the "backgroundservice" at 09:25:02.435 and the regular (red) onReceive() log entries to stop.

    Here is my b4a broadcast task as BackgroundService:
    Code:
    '--------------------------------------------------------------------------------------------------
    ' Background Services
    '    they will execute every Starter.broadcastFrequency milli-seconds
    '    they will be terminated when Starter.runBackgroundTasks is set the False
    '    they are started by settin Starter.runBackgroundTasks to True and calling StartService(BackgroundService)
    '
    ' Developed by Volker Petersen (volker.petersen01@gmail.com)
    ' July 2018
    ' -------------------------------------------------------------------------------------------------
    ' https://www.b4x.com/android/forum/threads/send-data-to-app-by-intent.43570/
    '
    #Region  Service Attributes
        
    #StartAtBoot: False   
    #End Region

    Sub Process_Globals
        
    'These global variables will be declared once when the application starts.
        'These variables can be accessed from all modules.
        Public API As Intent
        
    'Public intentObject(1) As String Array
    End Sub

    Sub Service_Create
    End Sub

    Sub Service_Start (StartingIntent As Intent)
        
    ' Broadcast Intents will transmit the data in 'sensorData' to other Apps
        
        
    ' using a Timer is causing an App shutdown. Not yet fully investigated
        'Public broadcastTimer As Timer
        'broadcastTimer.Initialize("broadcastNow", Starter.broadcastFrequency)
        'broadcastTimer.Enabled = True
        Do While(Starter.runBackgroundTasks)
            
    If (Starter.bleConnected ) Then
                Send_Broadcast_Intents
            
    End If
            Sleep(Starter.broadcastFrequency)
        
    Loop
        
    'broadcastTimer.Enabled = False
        Service.StopAutomaticForeground 'Call this when the background task completes (if there is one)
    End Sub

    Sub Service_Destroy

    End Sub


    Sub broadcastNow_Click
        
    If (Starter.bleConnected ) Then
            Send_Broadcast_Intents
        
    End If
    End Sub

    Sub Send_Broadcast_Intents
        
    Dim i As Int
        
    Dim str As String
        
        API.Initialize(
    "com.calypso.api.ACTION_DATA_AVAILABLE""")
        
    For i=0 To Starter.dataFieldsAPI.Size-1
            str = 
    Round2( Starter.sensorDataProcessed.Get(Starter.dataFieldsAPI.Get(i)), 3)
            API.PutExtra(Starter.dataFieldsAPI.Get(i), str )
        
    Next
        Starter.phoneManager.SendBroadcastIntent(API)

        Starter.api_ctr = Starter.api_ctr + 
    1
        
    'Log("BackgroundServices->Send_Broadcast_Intents: " & Starter.api_ctr & ".) send:" & Starter.dataFieldsAPI.Size&" fields")

    End Sub
    Any suggestions of what I can do to stop the Android OS from putting my backgroundservice to sleep?

    Thanks

    error_log.PNG
     
  2. Erel

    Erel Administrator Staff Member Licensed User

Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice