(。私は初心者じゃない!とメモリが十分であった)のonCreate onActivityResult前に呼び出さ - 始まる新しい活動は、常に前のacitityは
を終了させ、私はアンドロイドICS(SDK 4.0)に取り組んでいるとaiは奇妙なアクティビティを得ました私がstartActivityResultを呼び出すとライフサイクル。
毎回前のものが破壊されます!
別のアクティビティが呼び出され、前に来て重なり合うと、毎回重複しているアクティビティ(後ろのもの)が破壊され、ジンジャーブレッド(2.3.3)にはあまり見られません。
以下のログは、アクティビティ1がアクティビティ2を呼び出すプログラムに過ぎず、アクティビティ2でバックキーが押されたときに結果を返します。インテントにはフラグがありません。 はここに...私の変更ログです
左ICS(ギャルネックス)にrunnedとき、私は何か間違ったことを考えています
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..
右ジンジャーブレッド(ネックス1)にrunnedされたときに、ありますか?以前のアクティビティは、子アクティビティが終了するまで待機しないでください。
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");
}
}
Act2 パッケージkr.bos.Subclasses;
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