Android 1.5和1.6在调用finish活动和home按钮后出现奇怪的行为

Android 1.5和1.6在调用finish活动和home按钮后出现奇怪的行为,android,savestate,Android,Savestate,安卓平台1.5 我在调用finish()的末尾打开启动屏幕,然后转到浏览页面 在浏览页面,当我点击主页按钮时,它会隐藏应用程序。(安卓多任务功能的b/c) 当我再次进入Android的桌面启动应用程序时,它会从启动屏幕开始 安卓平台1.6 我在调用finish()的末尾打开启动屏幕,然后转到浏览页面 在浏览页面,当我点击主页按钮时,它会隐藏应用程序。(安卓多任务功能的b/c) 当我再次访问Android的桌面启动应用程序时,它总是从浏览屏幕而不是启动屏幕开始。为什么 我正在将所有数据放在

安卓平台1.5

  • 我在调用finish()的末尾打开启动屏幕,然后转到浏览页面
  • 在浏览页面,当我点击主页按钮时,它会隐藏应用程序。(安卓多任务功能的b/c)
  • 当我再次进入Android的桌面启动应用程序时,它会从启动屏幕开始
安卓平台1.6

  • 我在调用finish()的末尾打开启动屏幕,然后转到浏览页面
  • 在浏览页面,当我点击主页按钮时,它会隐藏应用程序。(安卓多任务功能的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");
}
}

“Instance found”never get Call意味着它永远不会返回bundle任何原因?

我刚刚在1.5和1.6设备上的一个应用程序上尝试了这一点,该应用程序执行相同的操作-LAUNCHER活动是一个启动屏幕,然后启动“main”活动并在其自身上调用
finish()
。splash活动还设置了
noHistory
属性

无论如何,在这两台设备上,按Home键后,主屏幕会按预期显示,然后再次显示launcher图标

然而,我认为Android并不能保证当你从启动器图标启动进程时,进程是否仍然有效。因此,您可以从任务堆栈停止的位置开始,也可以从启动程序活动开始

但是在你的情况下,根据我刚才的经验,当你点击发射器时,你通常会出现在“浏览”屏幕上。除非你的系统超负荷

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


另外,请注意,此方法通常仅在系统终止活动时调用;不仅仅是当它进入背景时。在这种情况下,您不应该做任何事情。

我只是在1.5和1.6设备上的一个应用程序中尝试了这一点,该应用程序执行相同的操作-LAUNCHER活动是一个启动屏幕,然后启动“main”活动并在其自身上调用
finish()
。splash活动还设置了
noHistory
属性

无论如何,在这两台设备上,按Home键后,主屏幕会按预期显示,然后再次显示launcher图标

然而,我认为Android并不能保证当你从启动器图标启动进程时,进程是否仍然有效。因此,您可以从任务堆栈停止的位置开始,也可以从启动程序活动开始

但是在你的情况下,根据我刚才的经验,当你点击发射器时,你通常会出现在“浏览”屏幕上。除非你的系统超负荷

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


另外,请注意,此方法通常仅在系统终止活动时调用;不仅仅是当它进入背景时。在这种情况下,您不应该做任何事情。

有人刚刚发布了一个答案,说他们的堆栈历史记录有类似的问题,但只有在调试器下运行时:有人刚刚发布了一个答案,说他们的堆栈历史记录有类似的问题,但只有在调试器下运行时: