你必须采取完全不同的方法。无论您是以startActivity()
还是startActivityForResult()
开始活动,因为onCreate()
,onStart()
和onResume()
将在您启动活动时被调用。
现在,如果您的Activity类中有一个方法启动另一个线程来完成一些工作,那么您必须使用标志。如果您的Activity需要在第一次执行时自动启动线程,那么您必须将其包装在if子句中以检查您在第一次运行时设置的标志。
这个想法是让您的活动在您的Application
实例或SharedPreferences
线程第一次执行时将布尔值设置为true。当你回到那个Activity并且不希望这个线程由于被调用onCreate()
而被自动运行时,那么你必须将你的调用代码包裹在if子句中,就像下面的例子。
这里是一个例子。
@Override
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
// Other stuff
if (!YourApplicationInstance.wasCalled) {
// Run your thread or do something else you want to do only once.
// Set the wasCalled flag to true to not run this code again
// if onCreate() is called a second time.
YourApplicationInstance.wasCalled = true;
}
}
你必须阅读Using Application context everywhere?了解如何实现我的伪类YourApplicationInstance
。
**注意**:注意'if'语句中的'!' – Kgrover