閱讀356 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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

  上一篇:go Android手機分辨率基礎知識(DPI,DIP計算)
  下一篇:go Android使用 httpClient取消http請求的方法