分享

Android中Activity共享变量的另一方法:Application context

 gearss 2016-05-25

感觉用这种方式存储登录信息比较好,比SharedPreferences存储登录信息的状态比较合适。
相当于存储session的数据(打个比喻)。

多个Activity中经常使用同一变量时,使用Bundle则比较麻烦,每次调用Activity都需要设置一次。如想在整个应用中使用,在java中一般是使用静态变量,而在android中有个更优雅的方式是使用Application context。

用SharedPreferences存储的话关闭应用的时候这个值还是最后一次设置的值,如果是非正常退出程序时登录状态就会有问题,所以在使用上感觉 application context是最合适存储当前登录状态的信息,当然可是存储一些相当于session当中存储的值,因为关闭应用后这些值就没有了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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属性就可以了,如下面所示:

1
2
<application android:name=".core.modules.ApplicationHelper"
android:icon="@drawable/icon" android:label="@string/app_name">

activity使用时:(这个是重点)

1
2
3
4
5
6
7
8
@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  getApplicationContext().putSession(false); // 设置登录状态为退出
}
public ApplicationHelper getApplicationContext() {
  return ((ApplicationHelper) super.getApplicationContext());
}

文章出处: http://blog.csdn.net/jdsjlzx/article/details/6988601                    

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多