gpt4 book ai didi

同一进程中的Android服务和内存释放

转载 作者:行者123 更新时间:2023-11-29 22:16:36 24 4
gpt4 key购买 nike

我有一个服务,它是前台的。它在本地绑定(bind)到一个(或多个) Activity ,因此 Activity 和服务在同一进程中运行。可能有一段时间不显示 Activity (典型的音乐播放器用例)。

如果服务和 Activity 在同一个进程中, Activity 的内存不能被操作系统收回,除非服务也被终止?根据this article,答案对我来说似乎是肯定的

如果最后一个为真,我是否应该创建两个单独的进程:

  • 对系统/其他应用友好?
  • 更有信心我的服务不会被终止?

或者,让 Activity 与服务保持一致并不是什么大问题?

最佳答案

I have a Service, which is foreground. It is locally bound to one (or more) activity, so the activity and the service runs in the same process. There might be some time during which the activity is not displayed (typical music player use case).

“典型的音乐播放器用例”不会使用 bindService() 恕我直言。恕我直言,前台服务不会使用 bindService()。至少,除了bindService() 用于 Activity ->服务通信,您还需要startService(),以便在您unbindService()(例如,用户按下 BACK),服务可以保持运行。

If service and activity are in the same process, the memory for the activity can't be repossessed by operating system, unless the service too is terminated?

Activity 的内存永远不会“被操作系统收回”,除非终止整个进程。不幸的是,this is not entirely clear from the documentation .

如果用户按 BACK 键退出 Activity ,或者您以其他方式调用 Activity 的 finish(),则 Activity 应该被垃圾收集,假设没有什么导致它挂起(例如,由静态数据成员引用)。

should I create two separate process

绝对不是。

关于同一进程中的Android服务和内存释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8297322/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com