首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Android中使用巨大的整体代码库的应用程序中粘性服务的影响?

在Android中使用巨大的整体代码库的应用程序中粘性服务的影响?
EN

Stack Overflow用户
提问于 2019-05-10 03:21:34
回答 1查看 20关注 0票数 0

众所周知,Java memory model由数据(或代码)、堆栈和堆段组成。我认为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,它将始终运行,我假设我会有以下影响,

  1. 我会消耗用户的电池。
  2. 一些额外的代码(不是服务)将与应用程序(?)一起运行。不过,我不确定。如果整个应用程序都位于数据段内,则不会允许其他应用程序顺利运行。

我对进程上的STICKY服务(一个巨大的整体代码)及其影响感到有点困惑。有人能在这方面给我澄清一下吗?

EN

回答 1

Stack Overflow用户

发布于 2019-05-10 03:36:02

,因为服务是粘性的,它使进程的行为像一个持久进程,并且它总是在运行。

不,它不是。

,但是因为我的服务是粘性的,所以它总是在运行

不,不会的。

引用the documentation for START_STICKY

如果此服务的进程在启动(从onStartCommand(Intent, int, int)返回后)时被终止,则将其保留在已启动状态,但不保留此提交的意图。稍后,系统将尝试重新创建服务。

Android仍然欢迎在它认为合适的时候终止你的进程。START_STICKY所做的就是鼓励Android在条件允许的情况下重启你的服务(在此过程中创建一个新的进程)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56066255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档