Starting background service when Android turns on

2019-02-07 07:02发布

I need to have ALWAYS a background service that will synchronize my Android application and a server. I know how to launch it through my application, but when the Android turns off, then the background service will die.

How can I do to keep the background service always running? (Even when the device turns off and then turns on...)

I need to add to the starts programs of Android my background service. Any hints?

2条回答
We Are One
2楼-- · 2019-02-07 07:33

use <action android:name="android.intent.action.BOOT_COMPLETED" /> for starting your service when the device turns on.

In AndroidManifest.xml:

 <receiver android:name=".BootBroadcastReceiver" >   
            <intent-filter>   
                <action android:name="android.intent.action.BOOT_COMPLETED" />   
            </intent-filter>   
        </receiver> 

Add permission in your AndroidManifest.xml as:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED">
</uses-permission>

In code part BootBroadcastReceiver:

public class BootBroadcastReceiver extends BroadcastReceiver {     
    static final String ACTION = "android.intent.action.BOOT_COMPLETED";   
    @Override   
    public void onReceive(Context context, Intent intent) {   
        // BOOT_COMPLETED” start Service    
        if (intent.getAction().equals(ACTION)) {   
            //Service    
            Intent serviceIntent = new Intent(context, StartOnBootService.class);       
            context.startService(serviceIntent);   
        }   
    }    
}   

EDIT: if you are talking about device screen on/off then you need to register <action android:name="android.intent.action.USER_PRESENT" /> and <action android:name="android.intent.action.SCREEN_ON" /> for starting your service when user is present or screen is on.

查看更多
冷血范
3楼-- · 2019-02-07 07:36
(Even when the device turns off and then turns on..

The OS broadcasts ACTION_BOOT_COMPLETED when it has finished booting. Your app can ask to receive this notification by requesting permission in your manifest:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED">
</uses-permission>

http://blog.gregfiumara.com/archives/82

http://www.androidcompetencycenter.com/2009/06/start-service-at-boot/

查看更多
登录 后发表回答