我有一个活动,它通过一个按钮从另一个活动开始,并在启动时传递了一个意图。我现在发现,该活动随后被创建了几次,因为它是从一个意图开始的,并且每次我点击上面提到的按钮时都会调用 onCreate()。在我阅读的文档中,它说“每次有一个“标准”活动的新意图时,都会创建一个新的类实例来响应该意图”,所以我假设我在某个地方有几个该活动的实例在堆栈上。这是我想避免的,因为活动有一些静态变量,这些变量是从其他活动中引用的,我想确保这个变量的值是确定性的!
我想要的是在按下按钮时摆脱所有现有实例并创建一个新的活动实例,或者确保只有一个活动并每次都以新的意图创建它。
我试图通过为活动设置 android:launchMode="singleTop" 并实现 onNewIntent(intent) 来实现这一点。这应该确保在这种情况下我只有一个活动实例并且我得到了新的意图。但是,如果我这样做,我基本上必须复制我的整个 onCreate() 方法,但只是使用新的意图,这感觉不对。
public void onNewIntent(Intent intent) {
myAdapter= null;
serverThread.stopThread();
serverThread = null;
this.onCreate(...); // <- somehow do all this with new intent
}
你知道如何轻松解决这种情况吗?