黑马程序员技术交流社区
标题: 【武汉校区】独家技术分享:如何使得服务不被杀死 [打印本页]
作者: 武汉分校-小舞 时间: 2016-3-16 11:17
标题: 【武汉校区】独家技术分享:如何使得服务不被杀死
本帖最后由 武汉分校-小舞 于 2016-3-16 11:23 编辑
【武汉校区】独家技术分享:如何使得服务不被杀死
1,重写服务的onStartCommand方法@Override
public intonStartCommand(Intent intent, intflags, intstartId) {
return START_STICKY;
}这样操作后,可以使得服务在第一次被杀死后,重新启动.不过只能重启一次.
2,利用通知将服务的进程优先级提高Android进程的优先级1,前台进程(Foreground)
2,可视进程(Visible)
3,服务进程(Service)
4,后台进程(Background)
5,空进程(Empty)
这几个进程之间的优先级逐级降低,被杀死的可能性也逐级升高.操作步骤:
在服务的onStartCommand中调用如下代码Notificationnotification = new Notification(R.drawable.ic_launcher,
"服务正在运行",
System.currentTimeMillis());
Intent intent=new Intent(this,MainActivity.class);
PendingIntentpendingIntent=PendingIntent.getService(this, 0, intent, 0);
notification.setLatestEventInfo(this, "标题",
"内容", pendingIntent);
//调用这个api就可以使得通知出现
startForeground(startId,notification);
这样的话,服务从一个后台进程变为了一个前台进程,提升了服务的优先级,从而提升了服务所在进程的优先级,使得服务进一步不被杀死.
3,在服务的onDestroy方法中发送广播,在广播中重启服务服务的onDestroy方法中:
Intentintent =newIntent();
intent.setAction("openService");
sendBroadcast(intent);
广播中的代码
@Override
public void onReceive(Context context, Intentintent) {
context.startService(new Intent(context,MyService.class));
}
[size=14.6667px]
想最快获取最新传智播客武汉讲师分享技术文章请加QQ 1641907557 ,后期会分享更多与实体班同步教程,助你冲击月薪20K!
推荐阅读:
作者: 洋葱头头 时间: 2016-3-16 19:41
顶一个{:2_31:}
作者: lq229190730 时间: 2016-3-16 22:12
好复杂 ....完全看不懂0.0
作者: wuyibo 时间: 2016-3-16 22:32
太给力了,顶一个
作者: 武汉分校-小舞 时间: 2016-3-17 09:13
作者: 武汉分校-小舞 时间: 2016-3-17 09:13
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |