取决于您的需要,但也许在清单中更改活动的启动模式就足够了:
android:launchMode="singleTask"
相反,“singleTask”和“singleInstance”活动只能开始一个任务。它们始终位于活动堆栈的根部。此外,设备一次只能保存一个活动实例——只有一个这样的任务。
这将防止在 onDestroy 之前调用 onCreate。
编辑:
另一种可能的解决方案是手动检查是否有其他进程在运行您的应用程序,例如 onCreate:
ActivityManager activityManager = (ActivityManager) this
.getSystemService(ACTIVITY_SERVICE);
List<RunningAppProcessInfo> procInfos = activityManager
.getRunningAppProcesses();
int counter = 0;
for (int i = 0; i < procInfos.size(); i++) {
if (procInfos.get(i).processName.equals(this.getPackageName())) {
counter++;
}
if (counter > 1) {
// send broadcast to make other activities call finish() or the like
}
}
犹豫是否发布此答案,因为它感觉有点骇人听闻,但由于到目前为止尚未发布其他建议,您不妨试一试。
我将它用于不同的场景,手机有时会在启动后启动我的应用程序两次。使用此代码,我可以通过简单地调用完成来阻止第二次启动完成。