最简单的方法是将数据保存onPause()
在onResume()
. 下一个问题是在哪里存储数据。有几种方法可以做到这一点:
- 使用自定义应用程序上下文
您可以通过以下方式在清单文件中扩展android.app.Application
和注册您的课程
<application android:name="your.application.class" ...
这将允许您通过调用`Context.getApplicationContext() 来获取类的单例实例。
例如,您可以创建
public class MyContext extends Application {
Bundle mySavedData = null;
public void setSavedData(Bundle data){
mySavedData = data;
}
public Bundle getSavedData() {
return mySavedData;
}
}
然后像这样使用它
@overide
public void onResume(){
...
Bundle state = ((MyContext) getApplicationContext()).getSavedData();
if(state != null) {
/* restore states */
}
...
}
@overide
public void onPause(){
...
Bundle state = new Bundle();
...
/* save your data here and save it into the context or set null otherwise*/
((MyContext) getApplicationContext()).setSavedData(state);
...
}
- 使用单例模式
您可以创建单例实例,而不是定义上下文
public class MySingleton {
static MySingleton instance;
public static MySingleton getInstance() {
if(instance == null){
instance = new MySingleton();
}
return instance;
}
public Bundle mySavedData = null;
void setSavedData(Bundle data){
mySavedData = data;
}
public Bundle getSavedData() {
return mySavedData;
}
}
你可以使用它
@overide
public void onResume(){
...
Bundle state = MySingleton.getInstance().getSavedData();
if(state != null) {
/* restore states */
}
...
}
@overide
public void onPause(){
...
Bundle state = new Bundle();
...
/* save your data here and save it into the context or set null otherwise*/
MySingleton.getInstance().setSavedData(state);
...
}
请注意,如果应用程序被终止,上下文和单例将被破坏。如果您想永久存储数据而不是使用应用程序文档文件夹或数据库(如果推荐),但我认为这不是您想要的。
我希望这能帮到您....