我想从堆栈中重新加载一个 Activity 。
我使用 startActivity()
开始新的 Activity 。当我在 Activity D 上时,我想重新加载 Activity A 而不是启动一个新的 Intent。从 D 调用 A 时我不能使用 startActivity()
因为它会触发 onCreate()
开始一个线程来获取一些数据。
编辑:更新了堆栈。
如果我使用 FLAG_ACTIVITY_REORDER_TO_FRONT
,它会再次调用 onCreate()
方法。
以下是我的场景。
Login Activity ̣→ Activity A → Activity B → Activity C → Activity D → Activity A
如何避免 onCreate()
被调用?
最佳答案
您必须采取完全不同的方法。使用 startActivity()
或 startActivityForResult()
启动 Activity 并不重要,因为 onCreate()
、onStart()
和 onResume()
将在您启动 Activity 时调用。
现在,如果您的 Activity 类中有一个方法启动另一个线程来完成一些工作,那么您必须使用标志。如果您的 Activity 需要在第一次执行时自动启动线程,那么您必须将其包裹在 if 子句中以检查您在首次运行时设置的标志。
想法是让您的 Activity 在您的 Application
实例或 SharedPreferences
首次执行线程时将 bool 值设置为 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
。
关于android - 如何避免在启动 Activity 时调用 onCreate()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6905774/