Val*_* V. 2 stack android android-activity
根据Android文档:
http://developer.android.com/guide/topics/fundamentals/tasks-and-back-stack.html
"当用户通过按Home键离开任务时,当前活动停止并且其任务进入后台.系统保留任务中每个活动的状态.如果用户稍后通过选择启动器图标恢复任务开始任务时,任务进入前台并恢复堆栈顶部的活动."
如果我理解正确,这意味着:
...对?我想这是正确的行为......
但是,我没有在我的应用程序中看到这一点.
如果我点击"主页按钮"然后恢复我的应用程序,通过按启动器图标,它将从主要活动开始 - 而不是顶部或最新的活动.
我在三星Galaxy Tab Android 2.2.1上编码 - 我在Android清单中有最常见的选项 - 事情是我处理10个不同的活动,具有不同的意图附加 - 以及Dispatcher类方法 - 或保存每个活动状态 - 听起来很苛刻.
我正在使用带有ADT版本12的Eclipse IDE; 我发现了一些非常有趣的东西:
当我从Eclipse IDE运行应用程序时,连接了我的设备,我没有看到这种行为.该应用程序的行为与文档中所述的相同.事实上,我只是在将我的apk部署到Google Play应用程序存储库后才看到这个; 并下载它进行测试.
我的问题是,有没有人找到这种情况发生的真正原因?文档错了吗?还是遗失了什么?这是Android上的错误吗?
我做的另一项研究是:
当我试用我的应用程序,从谷歌播放下载,作为APK,如果我第二次进入我的应用程序,我得到"主要"活动而不是最后一个开放.我按回家.按下主页后,我输入android的应用程序管理设置,找到我的应用程序并单击"强制停止".执行此操作后,应用程序的行为与文档中所述的相同.
有人帮忙!:)
这是android平台中的一个错误:
http://code.google.com/p/android/issues/detail?id=2373
解决方法是,将其放在主Activity的onCreate方法中:
if (!isTaskRoot())
{
final Intent intent = getIntent();
final String intentAction = intent.getAction();
if (intent.hasCategory(Intent.CATEGORY_LAUNCHER) && intentAction != null && intentAction.equals(Intent.ACTION_MAIN))
{
Log.w(LOG_TAG, "Main Activity is not the root. Finishing Main Activity instead of launching.");
finish();
return;
}
}
Run Code Online (Sandbox Code Playgroud)
从中提取:
...花了3天时间寻找这个.