Android中Activity共享變量的另一方法:Application context
感覺用這種方式存儲登錄信息比較好,比SharedPreferences存儲登錄信息的狀態比較合適。相當於存儲session的數據(打個比喻)。
多個Activity中經常使用同一變量時,使用Bundle則比較麻煩,每次調用Activity都需要設置一次。如想在整個應用中使用,在java中一般是使用靜態變量,而在android中有個更優雅的方式是使用Application context。
用SharedPreferences存儲的話關閉應用的時候這個值還是最後一次設置的值,如果是非正常退出程序時登錄狀態就會有問題,所以在使用上感覺application context是最合適存儲當前登錄狀態的信息,當然可是存儲一些相當於session當中存儲的值,因為關閉應用後這些值就沒有了。
package org.mdx.core.modules;
import android.app.Application;
public class ApplicationHelper extends Application {
private boolean session_enter = false; // 默認為false
/**
* 設置session狀態
*
* @param bol
* true為以登錄,false未登錄
*/
public void putSession(boolean bol) {
session_enter = bol;
}
/**
* 是否登錄
*
* @return true是,false否
*/
public boolean isEnter() {
return session_enter;
}
}
在AndroidManifest.xml的application加個name屬性就可以了,如下麵所示:
<application android:name=".core.modules.ApplicationHelper"
android:icon="@drawable/icon" android:label="@string/app_name">
activity使用時:(這個是重點)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getApplicationContext().putSession(false); // 設置登錄狀態為退出
}
public ApplicationHelper getApplicationContext() {
return ((ApplicationHelper) super.getApplicationContext());
}
最後更新:2017-04-02 06:52:08