У меня есть 2 вида деятельности: B и C.Android OnStop() вызывался unwantedly
B начинается C, а затем действие пользователя, отделок C, и у меня снова.
Вот код, который принимает пользователя от B до С
public void goToC(View v) {
Intent intent = new Intent(this, C.class);
intent.putExtra("STUFF", stuff);
startActivityForResult(intent, 1);
}
Вот код в С, который передает данные обратно в B
long rowsUpdated = myModel.updateStuff(this, stuff);
if (rowsUpdated == 1) {
Intent intent = new Intent();
// put the data in the intent
intent.putExtra("STUFF", stuff);
// set the flags to reuse B
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);
// set result code to notify the ItemEntriesActivity
setResult(1, intent);
// finish the current activity i.e. C
finish();
}
Вот код в B, который получает вышеуказанное
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
if (intent != null) {
switch (resultCode) {
case 1:
// Update the class variable, so that onResume() gets the updated value
stuff = intent.getExtras().getParcelable("STUFF");
break;
default:
break;
}
}
}
Моя проблема заключается в том, что этот код работает правильно, но всякий раз, когда я иду от В к C, то onStop()
на B называется. У меня нет кода, который вызывает finish()
на B. Это заставляет B.onCreate()
вызываться каждый раз и делает мое приложение медленным. Я также поместил android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
в оба действия в моем манифесте, но не повезло. Я провел 2 дня на этом, и ближе к концу своего ума. Любая помощь приветствуется.
Является ли 'C' полу или полностью прозрачным? Я имею в виду, что после запуска 'C' какая-то часть' B' все еще видна? – nKn
Нет. Ни одна из операций или полу или прозрачная. Когда я запускаю C, C целиком находится спереди, поэтому нет, B не видно после запуска C. – rgamber
Тогда ответ Джеймса Блэка прав. Если C полупрозрачен, вместо этого будет запущен 'onPause()'. – nKn