我注意到 facebook android 应用程序非常有弹性,无法关闭。尽管我已强制停止该应用程序并终止其所有相关服务,但它仍能以某种方式神奇地在一段时间后自行重启。
这引出了我的问题:
1) 如何在不卸载的情况下实际停止应用程序和所有 Facebook 服务。
2) 该应用程序采用什么方法来防止自身被杀死(即您如何在 android 中编写类似的程序)?
最佳答案
1) How do I actually stop the app and all facebook services without uninstalling it.
每当 Android 需要更多资源来处理另一个更高优先级进程的逻辑时,就会执行进程终止。
它如何应用于 Android 的 Service
?
服务在 onStartCommand()
中返回特定代码:
START_STICKY - 简而言之,一旦通过返回此常量终止了应用程序的进程,我们就会要求操作系统在可用资源出现时恢复应用程序的 Service
。因此,应用程序的进程被重新创建。
START_NOT_STICKY - 一旦通过返回此常量终止了应用程序的进程,我们就告诉操作系统不要理会我们的服务重新创建。
START_REDELIVER_INTENT - 与 START_STICKY 相同但有微妙的区别。每当我们的 Service
恢复时,我们都要求 onStartCommand()
具有我们在终止前最后一次交付的相同 Intent
。
对您的观察结果的解释可能是 Facebook 使用上述常量使服务恢复工作。
2) What methodology does the app apply to prevent itself from getting killed (i.e. how do you program something similar in android)?
每当我们想要防止我们的应用程序成为第一个被终止的候选者时,有几件事值得记住:
依赖Activity.onLowMemory()或 Application.onLowMemory()方法 - 如果我们将应用程序 Conceal 到后台或放弃它,则会调用此方法。在这种情况下,值得释放的资源包括:
缓存或缓存条目(例如 LruCache),
昂贵的对象(位图、临时 POJO 等)
取消注册动态 BroadcastReceivers
Unregistering statically declared broadcast receivers每当我们不需要它们时。
Preventing application from having memory leaks - 大多数泄漏内存的进程无疑是最先被系统终止的进程。
批量组织我们的 HTTP 请求 ( link ) ( link ) ( link ) ( link ) 而不是按需执行它们。
希望有所帮助。
关于android - facebook android app如何防止自己被杀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35188756/