当前位置: 代码迷 >> Android >> Android中Activity共享变量的另一步骤:Application context
  详细解决方案

Android中Activity共享变量的另一步骤:Application context

热度:18   发布时间:2016-05-01 17:15:14.0
Android中Activity共享变量的另一方法:Application context
感觉用这种方式存储登录信息比较好,比SharedPreferences存储登录信息的状态比较合适。
相当于存储session的数据(打个比喻)。

多个Activity中经常使用同一变量时,使用Bundle则比较麻烦,每次调用Activity都需要设置一次。如想在整个应用中使用,在java中一般是使用静态变量,而在android中有个更优雅的方式是使用Application context。
用SharedPreferences存储的话关闭应用的时候这个值还是最后一次设置的值,如果是非正常退出程序时登录状态就会有问题,所以在使用上感觉application context是最合适存储当前登录状态的信息,当然可是存储一些相当于session当中存储的值,因为关闭应用后这些值就没有了。

新建一个类,继承自Application
package org.mdx.core.modules;import android.app.Application;/** *  * <p> * Title: ApplicationHelper.java * </p> * <p> * E-Mail: [email protected] * </p> * <p> * QQ: 176291935 * </p> * <p> * Http: iaiai.iteye.com * </p> * <p> * Create time: 2011-7-14 * </p> *  * @author 丸子 * @version 0.0.1 */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使用时:(这个是重点)
@Overrideprotected void onCreate(Bundle savedInstanceState) {	super.onCreate(savedInstanceState);	getApplicationContext().putSession(false); // 设置登录状态为退出}public ApplicationHelper getApplicationContext() {	return ((ApplicationHelper) super.getApplicationContext());}
  相关解决方案