2010年9月29日星期三

Android - 让 Service 随系统的启动自动启动

在 Android系统中如果需要一个服务自动随系统的启动而启动,实现的思路是:

  1. 在Android 启动完成时会自动发出一个广播: android.intent.action.BOOT_COMPLETED。
  2. 我们要做的是顶一个广播接收器 BroadcastReceiver ,在其 intent-filter 段中定义 一条 BOOT_COMPLETED的action。
  3. 在这个Receiver 的 onReceive方法中启动指定的服务。

相关代码片段:
Receiver:


import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class ServiceLoader extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Intent serviceIntent = new Intent();
        serviceIntent.setAction("my.package.LCService");
        context.startService(serviceIntent);
    }
}

AndroidManifest.xml:

...
        <receiver android:name="ServiceLoader">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"></action>
                <category android:name="android.intent.category.HOME"></category>
            </intent-filter>
        </receiver>
...

在要启动的 Service 的 intent-filter段中需要定义 my.package.LCService 的action。

--
yaoms

没有评论:

发表评论