我的应用程序如何在应用程序退出时可靠地启动服务?

时间:2013-06-25 12:10:03

标签: android android-service

当我的应用程序退出时,我想启动一项服务,当用户重新启动应用程序时,我想停止它。但是,应用程序无法直接判断其所有活动何时完成。

这个问题很难,因为用户可以通过按回家或者像电话那样中断来退出任何Activity。所以我不能依赖退出root Activity的用户来检测何时启动服务。

所以我计划实施这些措施:

  • 在所有Activities StartService上暂停,除非转到或来自内部Activity。使用Intent参数进行跟踪。
  • 所有Activities上的OnResume:StopService

是否有更优雅,更强大的方法来实现这一目标?

这个问题有一些提示: Stop All Started Services on App Close / Exit

1 个答案:

答案 0 :(得分:1)

确定。让我尝试一下这个......

让我们从BaseActivity创建一个Activity,并且Activities所有BaseActivity都应该从此Override延伸...

onDestroy() BaseActivity中的Task并检查当前流程是否有更多有效ActivitiesTask ..如果没有任何更活跃的ActivityService然后开始您的onStart() ..

同时覆盖onCreate()中的BaseActivityTask,并检查这是唯一有效的ActivityService ...如果是,则停止你的Task

以下API可用于检查应用中是否有更多有效Activities和/或 ActivityManager activityManager = (ActivityManager)getBaseContext().getSystemService (Context.ACTIVITY_SERVICE); List<RunningTaskInfo> tasks= activityManager.getRunningTasks(Integer.MAX_VALUE);

获取正在运行的任务列表:

 for (RunningTaskInfo task : tasks) {
        if (getContext().getPackageName().equalsIgnoreCase(task.baseActivity.getPackageName())) {
              //check activity
           }
    }

从您的应用中检查任务是否:

RunningTaskInfo
Task

NumActivities属性可用于检查{{1}}中的活动..

希望它有所帮助...

EDIT1:我喜欢@CommonsWare评论..也许你可以重新考虑你的方法..