众所周知,Java 内存模型由数据(或代码)、栈和堆段组成。我认为Android也是如此。我有一个单体应用程序(让我们认为这个应用程序的代码库太大了)。当我启动应用程序时,应用程序中的活动和片段被加载到 Dalvik JVM 中并被卸载。在这种情况下,这如何与服务一起使用?假设我有一个STICKY_SERVICE
喜欢,
public class CountingNumberService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
for(int i=0; i<100; i++) {
//Do something
}
return Service.START_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
/**
* This has to do with some inter process communication
*/
return null;
}
}
由于服务是STICKY
它使进程表现得像一个持久进程并且它总是在运行。现在考虑我停止使用我的应用程序并且作为用户我认为应用程序已关闭(我正在关闭它或从最近清除它)但由于我的服务STICKY
将始终运行并且我认为我会产生以下影响,
- 我会吃掉用户的电池。
- 一些额外的代码(除了服务)将与应用程序一起运行(?)但不确定。如果是整个应用程序都位于数据段中,那么它将不允许其他应用程序顺利运行。
我STICKY
对流程上的服务(巨大的单体代码)及其影响感到有点困惑。有人可以澄清一下吗?