`
iaiai
  • 浏览: 2195919 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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: 176291935@qq.com
 * </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使用时:(这个是重点)
@Override
protected void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	getApplicationContext().putSession(false); // 设置登录状态为退出
}
public ApplicationHelper getApplicationContext() {
	return ((ApplicationHelper) super.getApplicationContext());
}
分享到:
评论

相关推荐

    android activity跳转 Application Context实现共享数据

    总结,Activity跳转、Intent使用、startActivityForResult/onActivityResult以及通过Application Context实现共享数据是Android开发中的核心知识点。理解并熟练运用这些概念,可以帮助开发者构建功能丰富且健壮的...

    诠释Android中Activity间的参数互传

    在Android中,Intent不仅用于启动一个Activity,还可以承载数据进行传输。我们可以通过构造Intent对象,并通过putExtra()方法添加键值对,将数据绑定到Intent中。例如: ```java Intent intent = new Intent...

    Android编程获取全局Context的方法

    在`onCreate()`方法中,我们调用了`getApplicationContext()`来获取应用程序的全局Context,并将其存储在一个静态变量中。这样,即使在Activity或Service等组件之外,我们也能访问到这个全局的Context。 接下来,...

    android不同activity之间共享数据解决方法

    在Android开发中,当需要在不同的Activity之间共享数据时,有多种方法可供选择。这里主要讨论的是如何在多个Activity间共享一个持久化的状态,比如一个socket连接,这在处理网络通信时尤为常见。传统的Intent传递...

    Android笔记 Application对象的使用-数据传递以及内存泄漏问题

    在Android应用开发中,`Application`对象是每个应用程序的基础组件,它是所有Activity、Service等组件的顶级父类。本篇笔记将深入探讨`Application`对象的使用,包括如何利用它进行数据传递以及如何避免常见的内存...

    Android实现菜单、弹出框、Activity带值例子

    3. 使用静态成员变量或Application对象:适用于多个Activity间共享数据,但需谨慎处理生命周期。 4. 使用IntentService或BroadcastReceiver:适合跨进程通信。 通过上述方法,开发者可以创建丰富的用户界面,提高...

    Android开发错误记录

    要在多个Activity之间共享变量,可以使用`Application`的`SharedPreferences`或创建一个公共的静态类。另一种方法是通过`Intent`传递数据。在示例中,推荐使用`Application Context`来创建全局变量。 7. **调整...

    ActivityShareData.rar

    描述提到了“Android 多个Activity之间共享类(数据)——Application Context”,这表明我们将讨论的是使用ApplicationContext来实现跨Activity数据共享的一种方法。 ApplicationContext是Android应用中的全局上...

    Context的理解1

    Context在Android开发中扮演着至关重要的角色,它是应用环境全局信息的接口,提供了与系统交互的各种方法,如启动Activity、广播、服务等。Context主要分为三类:Application、Activity和Service,它们都继承自...

    android面试

    Android中的Context, Activity,Application的区别 - **Context**:从字面意义上来讲,Context表示“上下文”。在Android中,它主要用于管理当前应用环境中的各种参数和变量,使得开发者能够方便地访问到各种资源...

    新版Android开发教程.rar

    这一联盟将会支持 Google 发布的 Android 手机操作系统或者应用软件,共同开发名为 Android 的 开 放源代码的移动系统。开放手机联盟包括手机制造商、手机芯片厂商和移动运营商几类。目前,联盟成员 数 量已经达到了...

    Android系统级小知识

    - Context是Android中的环境变量,它是对应用程序运行环境的引用,提供访问系统服务和应用程序资源的方法。 6. **Activity状态保存**: - 利用Activity生命周期和Preference来保存状态,例如onSaveInstanceState...

    Android Application类的详细介绍

    - Application、Service和Activity的创建都会创建一个Context实例,总计数量等于Service的数量加上Activity的数量再加1(Application的Context)。 6. **内存泄漏问题**: - 长期持有Context引用会导致内存泄漏,...

    android面试题

    - **一次性关闭所有Activity**:在Application类中管理Activity的列表,通过调用所有Activity的`finish()`方法一次性关闭。 #### 25. AIDL的工作原理 - **AIDL(Android Interface Definition Language)**:用于...

    android项目内存泄露排查实用.pdf

    用 MAT 分析,发现自定义的 Application 对象中有个 List 聚集了大量的某个 Activity 的 Context 引用,导致该 Activity 占用的 Heap 内存泄漏。 解决方法: * 修改代码,使自定义的 Application 对象不再持有大量...

    精品(2021-2022年)资料达内Android全真模块实训.docx

    - **通过Context获取Android中的内部和外部数据存储目录**:了解应用程序的数据存储位置。 - **偏好设置文件的读写和偏好设置框架**:使用SharedPreferences保存简单的键值对数据。 - **创建和访问SQLite数据库**:...

    Android Development Tutorial

    - **定义**:Activity代表了应用程序中的一个屏幕,用于显示用户界面并处理用户的交互行为。 - **生命周期**:Activity具有明确的生命周期,通过一系列回调方法(如onCreate()、onStart()、onResume()等)来管理其...

    安卓Android源码——(AABB获取Body).rar

    "AABB获取Body"这个主题可能指的是在Android系统中如何获取并处理Android应用程序的Activity、Application、BroadcastReceiver以及Service(简称AABB)这四类组件的实例或状态。在Android应用开发中,这些组件是构建...

    Android高级面试题.pdf

    - **Context的不当使用**:如在静态变量中保存Context,可能导致Activity无法正常销毁。应尽量使用Application Context,或在适当的时候解除引用。 除此之外,面试中还可能涉及Android组件、性能优化、网络编程、...

    面试题含答案.docx

    从一个Activity跳转到另一个Activity时,必然会执行的方法有: - 当前Activity的`onPause()`和`onStop()`。 - 新Activity的`onCreate()`、`onStart()`和`onResume()`。 #### 1.8 Activity的四种启动模式对比及使用...

Global site tag (gtag.js) - Google Analytics