我的应用程序启动Service
(在同一过程中)并启动另一个应用程序。在我的Service
中,我有一些代码来调查正在运行的任务:
private void logBaseAndTopActivities() {
ActivityManager activityManager = (ActivityManager)getApplicationContext().getSystemService(ACTIVITY_SERVICE);
List<RunningTaskInfo> taskInfoList = activityManager.getRunningTasks(Integer.MAX_VALUE);
for(RunningTaskInfo taskInfo : taskInfoList){
Log.d(TAG, "Base: " + taskInfo.baseActivity.getPackageName());
Log.d(TAG, "Top: " + taskInfo.topActivity.getPackageName());
}
}
在我启动其他应用之前,我得到的输出如下:
Base: com.example.myApp
Top: com.example.myApp
我从Activity
启动其他应用后,输出如下:
Base: com.example.otherApp
Top: com.example.otherApp
但我期待看到:
Base: com.example.myApp
Top: com.example.otherApp
因为如果我按下otherApp
的后退按钮,则会将我带回myApp
。我误解了什么?
另外,如何确定前景应用是否是从myApp
启动的?文档说getRunningTasks()
使用起来不安全,但目前第一个条目将是前台应用程序。
答案 0 :(得分:1)
我不确定这一点。但是,
baseActivity(docs)说:
作为任务中的第一个活动启动的组件。这可以被认为是这项任务的“应用”。
此处,任务被视为应用程序。因此,android系统为另一个应用程序启动另一个任务,并将baseActivity设置为com.example.otherApp。
相反,尝试从同一个应用程序启动一个活动并查看结果。 如果我错了,请纠正我。
答案 1 :(得分:0)
我现在看到了我期待看到的结果。我不知道为什么。好像一定是我的错误。我必须继续做的唯一事情是,由于某些问题我关闭了另一个otherApp
实例(在myApp
之外开始),然后一切正常。