我注意到,facebook android应用程序非常灵活,无法关闭。即使我已强制停止该应用程序并杀死了其所有相关服务,但仍可以在一段时间后以某种方式神奇地重新启动自身。
这使我想到了以下问题:
1)我如何真正停止应用程序和所有Facebook服务而不卸载它。
2)应用程序采用什么方法来防止自身被杀死(即您如何在android中编写类似的东西)?
1)我如何真正停止应用程序和所有Facebook服务而不卸载它。
每当Android需要更多资源来处理其他优先级更高的进程的逻辑时,便会执行进程终止。它如何适用于Android的Service
?
服务以以下形式返回特定代码onStartCommand()
:
START_STICKY-简而言之,一旦通过返回此常量终止了应用程序的进程,我们将要求操作系统在Service
出现可用资源时还原应用程序的进程。因此,将重新创建应用程序的过程。
START_NOT_STICKY-一旦通过返回此常量终止了应用程序的进程,我们就告诉OS不要打扰我们的服务娱乐。
START_REDELIVER_INTENT-与START_STICKY相同,但有细微的区别。当我们Service
恢复我们要求有onStartCommand()
与相同Intent
终止前最后一次提供了我们。
您所观察到的原因可能是Facebook使用上述常量使服务恢复正常工作。
2)应用程序采用什么方法来防止自身被杀死(即您如何在android中编写类似的东西)?
每当我们想要阻止我们的应用成为第一个被终止的候选者时,几乎没有什么值得记住的事情:
依靠Activity.onLowMemory()或Application.onLowMemory()方法-如果我们将应用程序隐藏到后台或放弃它,则将调用此方法。在这种情况下,值得释放资源,包括:
缓存或缓存条目(例如LruCache),
昂贵的对象(位图,临时POJO等)
注销动态BroadcastReceivers
每当我们不需要静态声明的广播接收器时,请注销它们。
防止应用程序发生内存泄漏-毫无疑问,大多数泄漏其内存的进程都是系统首先终止的进程。
希望能有所帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句