android 后台service开机自启动

来源:互联网 发布:淘宝模特多少钱一个月 编辑:程序博客网 时间:2024/06/08 03:49

比如说,新闻客户端,IM聊天工具,关机开机之后,需要后台的服务启动,来收到最新的推送或者消息。或者这个service要做其他事情,总之要能够开机自启。每当服务启动的时候,我们启动一个通知栏,代码如下:

public class MyService  extends Service{@Overridepublic IBinder onBind(Intent arg0) {// TODO Auto-generated method stubreturn null;}@Overridepublic void onCreate() {// TODO Auto-generated method stubsuper.onCreate();Notification notification = new Notification(R.drawable.ic_launcher, "myService", System.currentTimeMillis());Intent notificationIntent  = new Intent(this,MainActivity.class);PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, notificationIntent, 0);notification.setLatestEventInfo(getApplicationContext(), "this is title ", "this is content ", pendingIntent);startForeground(1, notification);Log.e("myService", "onCreate");}}
界面很简答,start这个service就行,主要是设置权限:

 <service android:name = ".MyService">            </service>                      <receiver android:name=".BootBroadcastReceiver" >            <intent-filter>                <action android:name="android.intent.action.BOOT_COMPLETED"/>                <category android:name="android.intent.category.HOME" />            </intent-filter>        </receiver>
用一个广播来接收,开机的Intent,收到这个广播之后,直接启动service就行了。

public class BootBroadcastReceiver extends BroadcastReceiver {    static final String action_boot="android.intent.action.BOOT_COMPLETED";      @Override    public void onReceive(Context context, Intent intent) {        if (intent.getAction().equals(action_boot)){             Intent intentService = new Intent(context, MyService.class);        context.startService(intentService);        }     } }

好了,代码已经完成了,除了主Activity,你自己去启动就可以了,记得添加权限:

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

记得要在安全中心里设置,这个应用开机自启哦。



0 0