对基本活动和热门活动的困惑

时间:2014-01-17 05:23:57

标签: android android-activity android-service

我的应用程序启动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()使用起来不安全,但目前第一个条目将是前台应用程序。

2 个答案:

答案 0 :(得分:1)

我不确定这一点。但是,

您正在开始另一个应用的活动。

baseActivity(docs)说:

  

作为任务中的第一个活动启动的组件。这可以被认为是这项任务的“应用”。

此处,任务被视为应用程序。因此,android系统为另一个应用程序启动另一个任务,并将baseActivity设置为com.example.otherApp。

相反,尝试从同一个应用程序启动一个活动并查看结果。 如果我错了,请纠正我。

答案 1 :(得分:0)

我现在看到了我期待看到的结果。我不知道为什么。好像一定是我的错误。我必须继续做的唯一事情是,由于某些问题我关闭了另一个otherApp实例(在myApp之外开始),然后一切正常。