我一直在研究Android SDK平台,有点不清楚如何保存应用程序的状态.因此,考虑到'Hello,Android'示例的这种小型重新设计:
package com.android.hello;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class HelloAndroid extends Activity {
private TextView mTextView = null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mTextView = new TextView(this);
if (savedInstanceState == null) {
mTextView.setText("Welcome to HelloAndroid!");
} else {
mTextView.setText("Welcome back.");
}
setContentView(mTextView);
}
}
Run Code Online (Sandbox Code Playgroud)
我认为这对于最简单的情况就足够了,但无论我如何远离应用程序,它总是以第一条消息响应.
我确信解决方案就像覆盖onPause或类似的那样简单,但我已经在文档中捅了大约30分钟左右,并且没有找到任何明显的东西.
我对Android中的这两种方法有点困惑.
从我理解的文档中,onSaveInstanceState()应该调用它来仅存储临时信息,并且onPause()应该用于存储任何持久性数据.
我想知道为什么要打电话onSaveInstance(),onPause()每次都打电话.然后我在记事本教程中阅读:
"请注意,
saveState()必须在两者中调用onSaveInstanceState()并onPause()确保保存数据.这是因为无法保证onSaveInstanceState()将被调用,因为在调用它时,它会被调用onPause()."
无法保证onSaveInstanceState()将被调用,因为您可以使用后退按钮简单地走出活动.
但是根据这个,如果你不在两个方法中保存持久数据,那么应用程序可能会在内部被杀死onSaveInstanceState().
所以我们需要实际保存两种方法中的持久数据,对吗?
但是,如果这是真的,这不是太多的开销,也许应该有一些其他额外的标志来告诉方法是否已被调用或什么?
http://developer.android.com/resources/tutorials/notepad/notepad-ex3.html
我想知道存储onSaveInstanceState(Bundle outState)方法的bundle"outState"的位置.
它是存储在内存中还是存储在设备中?
我担心存储在捆绑中的数据的安全性.