原文转载自:http://blog.sina.com.cn/s/blog_6e51958501014l38.html
如何判断activity是否是暂停之后回来的还是重新打开的.
我们项目中有时候会遇到一种情况,就是app中需要联网去下载东西.然后回来在次打开的时候更新listview.数据是原来的数据加上下载之后的
数据,
首先:我们怎么知道是重新回来了这个activity呢?
写一个MyApplication类,存放app的共享信息.
其中mActiveActivityName 参数是目前打开的activity的名字.每个activity打开的时候都执行这么一句.当然你可以写一个baseactivity.
每个新的activity都继承就行了.
------------------------------------------------------------------------------------------------------------
acyivity
@Override
protected void onResume() {
super.onResume();
((MyApplication)getApplication()).setStartActivityName(getClass().getName());
mEnableState = true;
}
------------------------------------------------------------------------------------------------------------
MyApplication
private String mActiveActivityName = "";
private boolean mIsBackendReturn = false;
public void setStartActivityName(String name) {
if(name.compareTo(mActiveActivityName) == 0) {
mIsBackendReturn = true;
mIsDataBoxUpdated = false;
} else {
mIsBackendReturn = false;
}
mActiveActivityName = name;
}
public boolean isBackendReturn() {
return mIsBackendReturn;
}
private boolean mIsDataBoxUpdated = false;
public boolean IsDataBoxUpdated() {
return mIsDataBoxUpdated;
}
public void DataBoxUpdateNow() {
mIsDataBoxUpdated = true;
}
------------------------------------------------------------------------------------------------------------
别的地方需要调isBackendReturn就知道是否是回来的.name.compareTo(mActiveActivityName)相等的时候就说明是返回来的,需要
更新
mIsBackendReturn = true;
mIsDataBoxUpdated = false;
别处调用的时候就知道是否需要更新列表了
---------------
---------------
---------------
实际应用中的用途:
我们有时候读取sd卡需要比较多的内存,我们如果不需要更新的时候就把需要读取的path保存到文件里面,当需要更新的时候才读取sd卡刷新列表.