0

基本上我正在从父(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,完成活动... (finish())
    2. OnCreated 调用,printed('isLoggedin=FALSE') <---(我期望 TRUE)不应该保持变量状态?(与重新启动应用程序相同...)
    3. onActivityResult 调用,打印('Mainactivty:onActivityResult 被调用!!')

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

4

2 回答 2

1

你还没有完全理解Activity 生命周期。一个活动可以在它不在前台的任何时候被杀死,或者当某些事情发生变化时(比如方向)。

如果您有要保存其状态的数据(例如实例变量),请在onSaveInstanceState. 这就是它的用途。

于 2013-10-31T01:04:09.307 回答
1

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

因此,当您进入那里时,如果未保存/恢复,则后堆栈中的每个 Activity 都将丢失状态onSaveInstanceState() - onRestoreInstanceState()

于 2013-10-31T01:07:12.133 回答