-1

(。私は初心者じゃない!とメモリが十分であった)の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(); 
    } 
} 
+0

あなたは、このための任意のsolutinを得ましたか。 – CoronaPintu

答えて

2

これは起こらないと誰も言いませんでした。 onActivityResult()は唯一の約束です!

+0

ああ神。それは...ですか?どのような前提を維持することができると思います生き残る...? – minimanimo

+0

特にICS /// – minimanimo

+1

@mylifeforIU私は生き残るために何かできることはないと思う。たとえあなたがここでハックを入れて何らかの形で生き残ったとしても、システムは低メモリ状態になるといつでもそれを殺すことができます。私はあなたがこれを可能にするためにあなたのデザインを変更することをお勧めします。 –

関連する問題