比如说,新闻客户端,IM聊天工具,关机开机之后,需要后台的服务启动,来收到最新的推送或者消息。或者这个service要做其他事情,总之要能够开机自启。每当服务启动的时候,我们启动一个通知栏,代码如下:
public class MyService extends Service{
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.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"/>
还有receiver里一定要添加:
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
还要记得要在安全中心里设置,这个应用开机自启哦。