当我的应用程序退出时,我想启动一项服务,当用户重新启动应用程序时,我想停止它。但是,应用程序无法直接判断其所有活动何时完成。
这个问题很难,因为用户可以通过按回家或者像电话那样中断来退出任何Activity
。所以我不能依赖退出root Activity的用户来检测何时启动服务。
所以我计划实施这些措施:
Activities
StartService
上暂停,除非转到或来自内部Activity
。使用Intent
参数进行跟踪。Activities
上的OnResume:StopService
是否有更优雅,更强大的方法来实现这一目标?
答案 0 :(得分:1)
确定。让我尝试一下这个......
让我们从BaseActivity
创建一个Activity
,并且Activities
所有BaseActivity
都应该从此Override
延伸...
onDestroy()
BaseActivity
中的Task
并检查当前流程是否有更多有效Activities
或Task
..如果没有任何更活跃的Activity
或Service
然后开始您的onStart()
..
同时覆盖onCreate()
中的BaseActivity
或Task
,并检查这是唯一有效的Activity
和Service
...如果是,则停止你的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评论..也许你可以重新考虑你的方法..