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