保存自定义视图的状态?

时间:2012-03-04 17:39:19

标签: android view save viewstate state

我有一个应用程序,用户点击屏幕(使用画布自定义视图),并在用户点按的位置显示位图。我的应用程序运行正常,除非我按下“主页”按钮并离开活动。这是用户点击屏幕并放置位图(按下主页按钮之前)的外观示例:http://i.stack.imgur.com/6BgIL.png

当用户按下“主页”按钮然后返回应用程序时,它将停止正常工作。放置在背景中的位图网格以及绘制到画布上的所有其他位图球都会消失。唯一剩下的球是最后放置的球。不仅如此,活动冻结,只允许用户在几秒钟后按下任何按钮。这是用户按下“主页”按钮并返回活动后屏幕的显示方式(与上图相同的屏幕):http://i.stack.imgur.com/198bP.png

如何保存自定义视图的状态,以便在再次启动活动时,它保持不变? (或者,如果我没有正确地解决这个问题,还有其他方法可以解决它吗?)。这是我的自定义表面视图中的暂停和恢复方法的代码:

public void pause(){
    isRunning = false;
    while(true){
        try {
            ourThread.join();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        break;
    }
    ourThread = null;
}

public void resume(){
    isRunning = true;
    ourThread = new Thread(this);
    ourThread.start();

}

我一直在寻找,但我似乎无法找到解决方案。如果需要,将提供其他代码。谢谢!

2 个答案:

答案 0 :(得分:0)

请参阅此http://developer.android.com/reference/android/app/Activity.html

你需要使用onResume()在屏幕上绘制视图......

阅读那里的活动生命周期并找出完整视图背后没有显示在第二个屏幕背后的实际原因...你可能不得不重新调整你的活动代码...

答案 1 :(得分:0)

您需要在onPause()上保存所有必需的数据,例如球坐标和活动状态,然后恢复onResume()上的所有内容。

您可以存储和恢复任何Java对象。 在http://developer.android.com/guide/topics/resources/runtime-changes.html了解有关onRetainNonConfigurationInstance()和getLastNonConfigurationInstance()的更多信息