-1

OnCreate вызывается перед onActivityResult - Запуск новой деятельности всегда вызывает предыдущий acitity закончить

Я работаю на андроида 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(); 
    } 
} 
+0

вы получили какой-либо solutin для этого? – CoronaPintu

ответ

2

Никто никогда не говорил, что этого не произойдет. onActivityResult() - единственное обещание!

+0

о бог. это? то что, по-вашему, может поддерживать препиоп, один выживет ... ?? – minimanimo

+0

особенно в ICS /// – minimanimo

+1

@mylifeforIU Я не думаю, что мы можем сделать все, чтобы выжить. Даже если вы здесь взломаете и каким-то образом выберете его, система всегда может убить его, если он столкнется с низкими условиями памяти. Я бы посоветовал вам изменить свой дизайн, чтобы это можно было сделать. –