您的位置:首页 > 移动开发 > Android开发

Android的Activity共享变量的另一种做法

2013-09-02 14:00 309 查看
--------------------------------------------------------

注意:这种做法对于activity比较少,只有两三个,并且context生命周期比较长,根本不怎么起作用。解决不了OOM

-----------------------------------------------------------

感觉用这种方式存储登录信息比较好,比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());

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 应用