Вы должны использовать совершенно другой подход. Не имеет значения, начинаете ли вы свою деятельность с startActivity()
или startActivityForResult()
, потому что onCreate()
, onStart()
и onResume()
будут вызваны при запуске действия.
Теперь, если у вас есть метод в вашем классе Activity, который запускает другой поток для выполнения какой-то работы, тогда вы должны работать с флагами. Если ваша активность требует автоматического запуска потока при первом выполнении, вы должны обернуть его вокруг предложения if, чтобы проверить флаг, установленный при первом запуске.
Идея состоит в том, чтобы ваша активность установила логическое значение true в вашем экземпляре Application
или SharedPreferences
при первом запуске потока. Когда вы возвращаетесь к этому действию и не хотите, чтобы этот поток запускался автоматически из-за вызова 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;
}
}
Вам придется читать Использовать контекст приложения везде? , чтобы понять, как реализовать мой псевдокласс YourApplicationInstance
.