8

我需要始终有一个后台服务来同步我的 Android 应用程序和服务器。我知道如何通过我的应用程序启动它,但是当 Android 关闭时,后台服务就会死掉。

如何保持后台服务始终运行?(即使设备关闭然后打开......)

我需要将我的后台服务添加到 Android 的启动程序中。有什么提示吗?

4

2 回答 2

22

用于 <action android:name="android.intent.action.BOOT_COMPLETED" /> 在设备打开时启动您的服务。

AndroidManifest.xml

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

在您的 as 添加权限AndroidManifest.xml

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

在代码部分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);   
        }   
    }    
}   

编辑:如果您正在谈论设备屏幕开/关,那么您需要注册<action android:name="android.intent.action.USER_PRESENT" /><action android:name="android.intent.action.SCREEN_ON" />在用户在场或屏幕开启时启动您的服务。

于 2012-06-23T10:50:40.283 回答
3
(Even when the device turns off and then turns on..

操作系统在完成启动后会广播 ACTION_BOOT_COMPLETED。您的应用可以通过在清单中请求权限来请求接收此通知:

<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/

于 2012-06-23T10:49:50.577 回答