Я работаю на андроида ICS (SDK 4.0) и аи получил странную деятельность (я не новичок !, и память была достаточно.) жизненный цикл, когда я вызываю startActivityResult.
предыдущий уничтожает каждый раз !!
Когда другое действие вызывается и выходит на фронт и перекрывается, то каждый раз перекрываемая деятельность - позади одного - разрушается, а не столько видна в пряниках (2.3.3).
Журнал, приведенный ниже, - это просто программа, которая Activity1 вызывает Activity 2, и просто возвращает результат, когда обратная клавиша нажата в действии 2. У намерения нет никакого флага. Вот мой модифицированный журнал ..
Левые при запущенной в ICS (Gal Nex), право, когда запускался в том Gingerbread (Nex один)
Log when runned in GingerBread
-------
- Start ActivityStackTest1 and launched ActivityStackTest2 immediately.
_ActivityStackTest1 _ onCreate_called..
_ActivityStackTest1 _ onCreate_calling new activity.. - starting activity for result
_ActivityStackTest1 _ onStart_called..
_ActivityStackTest1 _ onResume_called..
_ActivityStackTest1 _ onSaveInstanceState_called..
_ActivityStackTest1 _ onPause_called..
_ActivityStackTest2 _ onCreate_rendering..
_ActivityStackTest2 _ onCreate_got str - PASSED INTENT STRING
_ActivityStackTest2 _ onStart_called..
_ActivityStackTest2 _ onResume_called..
_ActivityStackTest1 _ onStop_called..
- Pressed Back Key and returned to ActivityStackTest1.
_ActivityStackTest2 _ onPause_called..
_ActivityStackTest1 _ onActivityResult_returned somehow.
_ActivityStackTest1 _ onStart_called..
_ActivityStackTest1 _ onResume_called..
_ActivityStackTest2 _ onStop_called..
Log when runned in IcecreamSandwich
=======
- Start ActivityStackTest1 and launched ActivityStackTest2 immediately.
_ActivityStackTest1 _ onCreate_called..
_ActivityStackTest1 _ onCreate_calling new activity.. - starting activity for result
_ActivityStackTest1 _ onStart_called..
_ActivityStackTest1 _ onResume_called..
_ActivityStackTest1 _ onSaveInstanceState_called..
_ActivityStackTest1 _ onPause_called..
_ActivityStackTest2 _ onCreate_rendering..
_ActivityStackTest2 _ onCreate_got str - PASSED INTENT STRING
_ActivityStackTest2 _ onStart_called..
_ActivityStackTest2 _ onResume_called..
_ActivityStackTest1 _ onStop_called..
**_ActivityStackTest1 _ onDestroy_called..** <- ???
- Pressed Back Key and returned to ActivityStackTest1.
_ActivityStackTest2 _ onPause_called..
_ActivityStackTest1 _ onCreate_called..
_ActivityStackTest1 _ onCreate_calling new activity.. - starting activity for result
_ActivityStackTest1 _ onStart_called..
_ActivityStackTest1 _ onActivityResult_returned somehow.
_ActivityStackTest1 _ onResume_called..
_ActivityStackTest1 _ onSaveInstanceState_called..
_ActivityStackTest1 _ onPause_called..
_ActivityStackTest1 _ onStop_called..
_ActivityStackTest1 _ onDestroy_called..
Могу ли я думать, что-то не так? Разве предыдущая деятельность не должна дожидаться окончания детской активности, а не заканчиваться?
Есть ли какая-либо проблема, которая изменила жизненный цикл после ICS? pleace обратите внимание на меня, когда вы получили какое-либо представление об этом, это очень больно.
add - мой код здесь здесь.
Act1 упаковка kr.bos.Subclasses;
import kr.bos.Framework.BaseActivity;
import kr.bos.Framework.Logger;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.Bundle;
public class ActivityStackTest1 extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Logger.e("called..");
if(!mOptionA) {
Logger.i("calling new activity.. - starting activity for result");
Intent intent = new Intent(this,ActivityStackTest2.class);
intent.putExtra("STRING", "PASSED INTENT STRING");
startActivityForResult(intent , 0);
}
}
@Override protected void onStart() {
// FIXME Auto-generated method stub
super.onStart();
Logger.e("called..");
}
@Override protected void onResume() {
// FIXME Auto-generated method stub
super.onResume();
Logger.e("called..");
}
@Override protected void onPause() {
super.onPause();
Logger.e("called..");
}
@Override protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
Logger.e("called..");
}
@Override protected void onStop() {
// FIXME Auto-generated method stub
super.onStop();
Logger.e("called..");
}
@Override protected void onDestroy() {
// FIXME Auto-generated method stub
super.onDestroy();
Logger.e("called..");
}
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Logger.i("returned somehow.");
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
Logger.i("on configuration change");
}
}
kr.bos.Subclasses Акт 2 пакета;
import kr.bos.Framework.BaseActivity;
import kr.bos.Framework.Logger;
import android.content.res.Configuration;
import android.os.Bundle;
public class ActivityStackTest2 extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Logger.i("rendering..");
String strget = getIntent().getStringExtra("STRING");
Logger.i("got str - "+strget);
}
@Override protected void onStart() {
// FIXME Auto-generated method stub
super.onStart();
Logger.e("called..");
}
@Override protected void onResume() {
// FIXME Auto-generated method stub
super.onResume();
Logger.e("called..");
}
@Override protected void onPause() {
super.onPause();
Logger.e("called..");
}
@Override protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
Logger.e("called..");
}
@Override protected void onStop() {
// FIXME Auto-generated method stub
super.onStop();
Logger.e("called..");
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
Logger.i("on configuration change");
}
@Override
public void onBackPressed() {
setResult(0);
super.onBackPressed();
}
}
вы получили какой-либо solutin для этого? – CoronaPintu