1

安卓平台 1.5

  • 我在最后打开启动屏幕我调用完成()然后我移动到浏览页面。
  • 在浏览页面上,当我点击主页按钮时,它会隐藏应用程序。(Android 多任务功能的 b/c)
  • 当我再次转到 Android 的桌面启动应用程序时,它从启动屏幕启动。

安卓平台 1.6

  • 我在最后打开启动屏幕我调用完成()然后我移动到浏览页面。
  • 在浏览页面上,当我点击主页按钮时,它会隐藏应用程序。(Android 多任务功能的 b/c)
  • 当我再次转到 Android 的桌面启动应用程序时,它总是从浏览屏幕而不是启动屏幕启动,为什么会这样?

我将所有数据放在 onsave 实例中

@Override
 protected void onSaveInstanceState(Bundle outState) {
  outState.putString(WLConstants.READ_GPS, readGPS );
  outState.putSerializable(WLConstants.SEARCH_CRITERIA, searchCriteria);
  outState.putString(WLConstants.PARAM_WHERE, locationField.getText().toString());
  outState.putBoolean(WLConstants.PARAM_NEAR_ME, rNearMe.isChecked());
  super.onSaveInstanceState(outState);
  Log.v(TAG, "onSaveInstanceState()");
 } 

我正在从 oncreate 方法中提取值

public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
if(savedInstanceState != null){
Log.v(TAG,"instace found");
}else{

Log.v(TAG,"instace not found");
}
}

“找到实例”永远不会被调用意味着它永远不会返回捆绑包,为什么?

4

1 回答 1

1

我刚刚在 1.5 和 1.6 设备上的一个应用程序上尝试了这个,它做同样的事情 - LAUNCHER 活动是一个启动屏幕,然后启动“主”活动并调用finish()自身。启动活动也具有noHistory属性集。

无论如何,在这两种设备上,主屏幕在按 Home 后按预期显示,然后再次按启动器图标。

但是,我认为 Android 不提供任何保证,即当您从启动器图标启动进程时,您的进程是否仍然存在。因此,您可以从任务堆栈停止的地方开始,也可以从 LAUNCHER 活动开始。

但是在你的情况下,根据我刚才的经验,当你点击启动器时,你通常应该在你的“浏览”屏幕上结束。除非你的系统超载得离谱。

无论如何,关于实例状态:您是否尝试过在方法中首先调用是否super.onSaveInstanceState(outState)有任何区别?

另外,请注意,此方法通常仅在活动被系统杀死时才调用;不仅仅是当它进入后台时。在这种情况下,你不应该做任何事情。

于 2010-01-12T13:38:31.967 回答