例如,如果我启动我的应用程序并启动活动Main
然后从主屏幕小部件启动另一个Main
实例,那么这两个Main
实例在同一任务中不是吗?
我问的原因是因为这个意图在从窗口小部件启动活动时没有清除活动堆栈
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK);
答案 0 :(得分:-1)
我建议使用manifest.xml文件使用单实例模式。
<activity android:launchMode= "singleInstance" />
或尝试启动您当前的活动:
@SuppressLint("NewApi")
@SuppressWarnings("deprecation")
public Intent launchIntent(Context ctx) {
final ActivityManager am = (ActivityManager) ctx.getSystemService(Context.ACTIVITY_SERVICE);
Intent intent = new Intent();
boolean activated = false;
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
List<ActivityManager.AppTask> tasks = am.getAppTasks();
for (ActivityManager.AppTask task: tasks){
intent = task.getTaskInfo().baseIntent;
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
activated = true;
break;
}
} else {
final List<ActivityManager.RecentTaskInfo> recentTaskInfos = am.getRecentTasks(1024,0);
String myPkgNm = ctx.getPackageName();
if (!recentTaskInfos.isEmpty()) {
ActivityManager.RecentTaskInfo recentTaskInfo;
final int size = recentTaskInfos.size();
for (int i = 0; i < size; i++) {
recentTaskInfo = recentTaskInfos.get(i);
if (recentTaskInfo.baseIntent.getComponent().getPackageName().equals(myPkgNm)) {
intent = recentTaskInfo.baseIntent;
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
activated = true;
}
}
}
}
if (!activated) {
intent = new Intent(this, ABase.class);
}
return intent;
}