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());
}
注意:这种做法对于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中全局变量的表示 多个activity的数据共享
- Android中Activity共享变量的另一方法:Application context
- android 用context共享变量 、代替静态变量static、 activity之间传递变量
- Android中Activity共享变量的另一方法:Application context
- Android中Activity共享变量的另一方法:Application context
- Android中Activity共享变量的另一方法:Application context
- Android中Activity共享变量的另一方法:Application context
- Android中Activity共享变量的另一方法:Application context
- Android中Activity共享变量的另一方法:Application context .
- Android中Activity共享变量的另一方法:Application context
- 全局共享变量(Android)
- android中不同activity之间共享数据
- android 应用程序Activity之间数据传递与共享的几种途径
- 如何android多Activity间共享数据 (extends Application)
- 【Android新手笔记四】activity之间的数据共享
- Android通过共享用户ID来实现多Activity进程共享
- Android多个Activity之间共享类(数据)——Application Context
- Android Service和activity实现数据共享
- 两个Activity之间共享数据、互相访问的另一种方式的实现
- Activity共享变量的方法 -- Application context