相关疑难解决方法(0)

主页按键行为

在开发示例Android应用程序时,我构建了两个活动1)活动1 2)活动2

现在,活动2是前景活动,而活动1是背景活动.现在用户按Home键.应用程序(即两个活动)消失了.现在我们重新启动应用程序,我们将活动1视为前台活动.我的问题是:

1)当按下主页键时,平台是否保留任何历史记录条目?2)我们如何将用户带到重新启动应用程序的上次启动活动?

android

12
推荐指数
2
解决办法
1万
查看次数

活动无法恢复

在过去的几个月里,我一直在开发一个多功能的实时游戏引擎,我已经学到了很多,但在应用程序生命周期方面我仍然觉得很天真.具体来说,我正在尝试实现一个Activity,它可以被用户拖入后台,然后正确恢复.

我当前的架构是这样的:我有一个XML菜单启动器活动,可以使用intent创建实时游戏活动.此游戏活动中的相关数据通过静态数据结构和变量引用.Game活动在我的SurfaceView对象的onSurfaceCreate()回调中创建工作线程.

当用户按下后退按钮时,活动将被销毁,并且它们将被发送回启动器活动中的XML菜单.很好,现在很好.当用户按下主页按钮时,活动将被发送到后台.太好了.当用户尝试在游戏活动中找回回路后,我的问题就出现了.当用户触摸启动器图标时,游戏将被销毁并重新启动菜单.此外,当用户通过任务管理器恢复游戏时,onSurfaceCreate()回调将触发并启动工作线程,但游戏将被冻结.

所以,我有两个问题.首先,如何通过启动器图标恢复活动,而不是重新启动游戏?其次,当我恢复活动时,在保持游戏数据的同时重启我的工作线程需要采取什么行动?

谢谢!

编辑:根据要求,我在下面包括一些代码.我的onSurfaceCreate有点复杂,它向另一个线程发送消息,然后另一个线程实现回调.我已经确认在恢复游戏活动时会触发此实现功能.

protected void surfaceCreate()
{
    Log.e(TAG, "surfaceCreate");

    Thread gameThread = createGameThread();
    gameThread.start();
}


protected final void onResume()
{
    super.onResume();

    resume();
}

protected final void onPause()
{
    super.onPause();

    pause();
}
Run Code Online (Sandbox Code Playgroud)

这些神秘的pause()和resume()方法只是简单地设置一个布尔变量来阻止某些游戏逻辑被执行,它们不会阻碍工作线程,这应该继续循环.

编辑:谢谢穆罕默德解决我的第一个(虽然更小)的问题.事实证明,当未通过USB连接到IDE时,启动器图标的行为会有所不同.第二个问题仍未得到解决.

编辑:一切正常!第二个问题是我的代码特有的问题,我为此道歉.我希望这个问题对那些处理启动器和IDE的人来说仍然有用.

java xml android

7
推荐指数
1
解决办法
1421
查看次数

标签 统计

android ×2

java ×1

xml ×1