android - facebook android app如何防止自己被杀

标签 android facebook

我注意到 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)?

每当我们想要防止我们的应用程序成为第一个被终止的候选者时,有几件事值得记住:

  1. 依赖Activity.onLowMemory()Application.onLowMemory()方法 - 如果我们将应用程序 Conceal 到后台或放弃它,则会调用此方法。在这种情况下,值得释放的资源包括:

    • 缓存或缓存条目(例如 LruCache),

    • 昂贵的对象(位图、临时 POJO 等)

    • 取消注册动态 BroadcastReceivers

  2. Unregistering statically declared broadcast receivers每当我们不需要它们时。

  3. Preventing application from having memory leaks - 大多数泄漏内存的进程无疑是最先被系统终止的进程。

  4. 防止对象创建并将我们的代码设计为不可变的 ( book ) ( link )

  5. 批量组织我们的 HTTP 请求 ( link ) ( link ) ( link ) ( link ) 而不是按需执行它们。

希望有所帮助。

关于android - facebook android app如何防止自己被杀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35188756/

相关文章:

android - Nexus 5 和 Android L 上的 Material 设计

android - fragment 内的折叠工具栏布局在顶部留下空白

android - 是否可以在 iOS 或 Android 上的另一个应用程序中嵌入下载按钮 - 而无需离开原始应用程序?

facebook - 如何从我的应用程序直接向 Facebook 用户发送消息?

java - 在 Android 中使用 SDK 3.15 登录 Facebook 时获取用户名

未请求 Android 权限

android - 根据当前位置获取我当前所在的总计 "Areas/Zones"

javascript - Facebook 的数据库结构来存储评论和发布?

ios - Instagram 或 Facebook 的 feed 在 iOS 中是如何工作的

facebook - 2018 年通过网站链接打开 Facebook 应用程序的正确方法?