我有一个启动活动(比如Activity A
)的服务,如下所示:
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
getApplicationContext().startActivity(intent);
当我启动我的应用程序时,Activity A
会出现在应用程序的第一个活动之前。
我有两个解决方案来解决这个问题:
1)
将上面的代码更改为:
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY
| Intent.FLAG_ACTIVITY_NEW_TASK);
getApplicationContext().startActivity(intent);
问题:
启动活动并按主页键后,我仍然在历史堆栈(= recent tasks
)中看到活动。怎么来的?
在我启动我的应用程序后,这两个任务合并为一个,应用程序的第一个活动位于顶部。但任何其他应用程序,创建一个新任务和任务Activity A
仍然存在。怎么来的?
2)将上面的代码更改为:
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY
| Intent.FLAG_ACTIVITY_NEW_TASK);
getApplicationContext().startActivity(intent);
并添加到清单中:
<activity
android:name="org.achartengine.GraphicalActivity"
android:taskAffinity="org.achartengine"
>
其中Activity A
= android:name="org.achartengine.GraphicalActivity"
问题:我保留了不必要的任务堆栈。
我假设很少有人从服务开始该活动。即便如此,他们也只会这样做一次。这意味着当用户单击主页/返回键时,从任何历史堆栈中清除活动会更加整洁。
哪个选项是首选?(或另一个?)