美文网首页APP开发实战DevSupport
APP开发实战71-服务不被杀死

APP开发实战71-服务不被杀死

作者: xjbclz | 来源:发表于2016-07-06 21:14 被阅读57次

17.6服务不被杀死

服务不被杀死分3种来讨论:

(1)   系统根据资源分配情况杀死服务

用户不干预,完全靠系统来控制,办法有很多。比如 onStartCommand() 方法的返回值设为 START_STICKY ,服务就会在资源紧张的时候被杀掉,然后在资源足够的时候再恢复。当然也可设置为前台服务,使其有高的优先级,在资源紧张的时候也不会被杀掉。

(2)   用户通过 settings -> Apps -> Running -> Stop 方式杀死服务

用户干预,主动杀掉运行中的服务。这个过程杀死服务会通过服务的生命周期,也就是会调用 onDestory() 方法,这时候一个方案就是在 onDestory() 中发送广播开启自己。这样杀死服务后会立即启动。如下:

@Override

publicvoid onCreate() {

// TODO Auto-generated method stub

super.onCreate();

mBR = new BroadcastReceiver() {

@Override

public void onReceive(Context context,Intent intent) {

//TODO Auto-generated method stub

Intent a = new Intent(ServiceA.this,ServiceA.class);

startService(a);

}

};

mIF = new IntentFilter();

mIF.addAction("listener");

registerReceiver(mBR, mIF);

}

@Override

publicvoid onDestroy() {

// TODO Auto-generated method stub

super.onDestroy();

Intent intent = new Intent();

intent.setAction("listener");

sendBroadcast(intent);

unregisterReceiver(mBR);

}

这个方案在有些情况下,发送的广播在消息队列中排的靠后,就有可能服务还没接收到广播就销毁了。

为了能让这个机制完美运行,可以开启两个服务,相互监听,相互启动。服务A监听B的广播来启动B,服务B监听A的广播来启动A。

(3)用户通过 settings -> Apps -> Downloaded -> ForceStop 方式杀死服务

这种情况,在服务里加代码是无法被调用的。处理这个情况的唯一方法是屏蔽掉 forcestop和 uninstall 按钮,让其不可用。

(转自:http://www.tuicool.com/articles/iu22QnF)

相关文章

  • APP开发实战71-服务不被杀死

    17.6服务不被杀死 服务不被杀死分3种来讨论: (1) 系统根据资源分配情况杀死服务 用户不干预,完全靠系统来控...

  • RunLoop的基本理解和应用

    ios中的runloop简而言之就是一个管理线程的对象,想一下, 我们开发的App为什么能在不被杀死的情况下可以响...

  • 最新uni-app实战社交类app和小程序开发教程(仿糗事百科)

    课程概述: uni-app实战项目,实战开发仿糗事百科app,其中会包括发布到安卓端app,IOS端app、微信小...

  • Framework7+Vue+Flask开发实战 - PT保种管

    参考:PhoneGap Hybrid APP 开发实战(3):用户登录 鉴权PhoneGap Hybrid APP...

  • android双进程守护

    起因:需求是需要一个服务在后台,尽量能不被杀死,就算杀死了也可以被启动起来。 方式: 1.提高服务的优先级 2...

  • APP开发实战69-前台服务

    17.4前台服务 前台服务是被认为是用户已知的正在运行的服务,当系统需要释放内存时不会优先杀掉该进程。前台进程必须...

  • ndk层实现双进程守护

    我们在开发和运行维护app的过程中,应该碰到过例如应用被杀死或者后台服务被回收等,导致的消息无法及时推送传达,那像...

  • 2018-03-13

    立群网络服务 立群服务可以概括为三大块: ]一、开发 网站开发、app开发、小程序开发等 二、 ]网络推广 App...

  • Android开发杀不死的应用

    最近项目要求,需要一个写一个服务一直跑在后台,不被杀死,就算被杀死也要被重启,参考了网上各种资料,最后做个总结。 ...

  • 查看node进程命令

    查看 杀死所有node服务 杀死某个服务

网友评论

    本文标题:APP开发实战71-服务不被杀死

    本文链接:https://www.haomeiwen.com/subject/zsgkjttx.html