A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 武汉分校-小舞 于 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!



推荐阅读:



5 个回复

倒序浏览
顶一个{:2_31:}
回复 使用道具 举报
好复杂 ....完全看不懂0.0
回复 使用道具 举报
太给力了,顶一个
回复 使用道具 举报
回复 使用道具 举报
wuyibo 发表于 2016-3-16 22:32
太给力了,顶一个

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马