从childActivity返回后,Mainactivity重新启动

时间:2013-10-31 00:49:35

标签: android android-activity oncreate onactivityresult

基本上我从父(MainActivity)调用一个新活动(ExplorerActivity) 使用伪代码混合演示......

public class MainActivity extends Activity {

boolean isLoggedin=false;

onCreate(){
 Print(isLoggedin)
 isLoggedin=true;
}


public boolean onOptionsItemSelected(MenuItem item) {

Intent i = new Intent(MainActivity.this, ExplorerActivity.class);
 startActivityForResult(i, 0);
 return true;
}

protected void onActivityResult(int requestCode, int resultCode, Intent data){
     super.onActivityResult(requestCode, resultCode, data);
     Log.e("Teste", "Mainactivty: onActivityResult was called!!");
     xTaskThread = new xTaskThread();
     xTaskThread.start();
}

------------ ExplorerActivity -----
public class ExplorerActivity extends ListActivity {
Intent i = getIntent();
i.putExtra("fileURL", file.getAbsolutePath());
setResult(RESULT_OK, i);
finish();

Manifest:
<activity
        android:name="com.geoclient.misc.ExplorerActivity"
        android:label="@string/app_name" 
        android:screenOrientation="landscape">
</activity>
-------------------------------------
  • 一切正常,直到从ChildActivity(ExplorerActivity)返回。 按顺序成功:

    1. ExplorerActivity,完成活动......(完成())
    2. OnCreated调用,打印('isLoggedin = FALSE')&lt; ---(我期望为TRUE)不应该保持状态变量?? (与重新启动应用程序相同...)
    3. onActivityResult被调用,打印('Mainactivty:onActivityResult被称为!!')

它看起来像应用程序重新启动...我不明白..我期待回到onResume()并且变量处于相同的状态..请让我知道我错在哪里! (我在Mainactivity中使用googlemap,不确定这是否相关..) 非常感谢!

2 个答案:

答案 0 :(得分:1)

您还没有完全理解the Activity lifecycle。一个活动可以在它不在前台的任何时候被杀死,或者在某些东西发生变化时(如方向)被杀死。

如果您要保存状态的数据(如实例变量),请在onSaveInstanceState中执行此操作。这就是它的用途。

答案 1 :(得分:1)

查看您在那里写的清单行,ExplorerActivity似乎被迫landscape方向。

所以当你进去时,如果没有在onSaveInstanceState() - onRestoreInstanceState()

中保存/恢复,那么后面堆栈中的每个活动都将失去状态