怎么获取Android应用程序的上下文
2013-08-26 23:55
197 查看
前面我做了一个类似于腾讯QQ一样的聊天应用,在这个应用里面,有很多activity,而这些activity之间经常要进行互相启动、往复跳转、还有就是通过Notification启动。当activity多了之后,如果设置他的模式为单例模式,或者不设置模式。在反复启动后会出现数据不同步、fc等各种未知的错误。于是我们就想过一种办法就是通过保存一个Context,然后每次启动一个新activity之后再关闭原来的activity(注:关闭的这个activity,是不会再通过返回键之类的操作来显示的activity)。还有就是当我们启动的activity太多,然后又退出程序之后,如果后台service收到新消息而再次启动聊天界面的activity也会出现fc的情况,在这种情况下我们也需要在退出应用的时候逐个退出开启的activity。在我们退出activity的时候需要什么?就是需要上下文,那我们应该保存什么样的上下文才比较好呢,我们不能只仅仅单单的保存某一个activity的上下文吧?
1、首先我们建立一个工程:Amir。可以生成一个空白的activity,也可以不用。然后在工程下建立一个AppContext.java类,并且继承于Application。
2、在AppContext.java类中建立一个静态方法,插入如下一段代码:
package com.amir.application;
import android.app.Application;
public class AppContext extends Application {
//建立一个静态私有变量用于存储上下文实例
private static AppContext instance;
//建立一个静态方法,用于返回所需要的上下文实例
public static AppContext getInstance(){
return instance;
}
@Override
public void onCreate() {
super.onCreate();
//将应用程序本身的上下文实例赋值给instance变量
this.instance = AppContext.this;
}
}
3、在Manifest.xml文件当中,在<Application>标签当中加入name属性为:android:name="com.amir.application.AppContext"
<application
android:name="com.amir.application.AppContext"
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
4、我们在应用程序中任何一个地方都可以通过AppContext.getInstance();获得上下文。然后我们就可以通过上下文.finish()等方法进行关闭activity。
以上是我使用过的最方便,也是最常见的办法。在项目中推荐使用一些比较规范而且简单的方法来达到同样的目的。小智慧大用途,积少成多就会写一手漂亮的code.
作者:Amir
博客:http://blog.csdn.net/amir_zt/
以上原创,转载请注明出处,谢谢。
http://blog.csdn.net/amir_zt/article/details/10366227
1、首先我们建立一个工程:Amir。可以生成一个空白的activity,也可以不用。然后在工程下建立一个AppContext.java类,并且继承于Application。
2、在AppContext.java类中建立一个静态方法,插入如下一段代码:
package com.amir.application;
import android.app.Application;
public class AppContext extends Application {
//建立一个静态私有变量用于存储上下文实例
private static AppContext instance;
//建立一个静态方法,用于返回所需要的上下文实例
public static AppContext getInstance(){
return instance;
}
@Override
public void onCreate() {
super.onCreate();
//将应用程序本身的上下文实例赋值给instance变量
this.instance = AppContext.this;
}
}
3、在Manifest.xml文件当中,在<Application>标签当中加入name属性为:android:name="com.amir.application.AppContext"
<application
android:name="com.amir.application.AppContext"
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
4、我们在应用程序中任何一个地方都可以通过AppContext.getInstance();获得上下文。然后我们就可以通过上下文.finish()等方法进行关闭activity。
以上是我使用过的最方便,也是最常见的办法。在项目中推荐使用一些比较规范而且简单的方法来达到同样的目的。小智慧大用途,积少成多就会写一手漂亮的code.
作者:Amir
博客:http://blog.csdn.net/amir_zt/
以上原创,转载请注明出处,谢谢。
http://blog.csdn.net/amir_zt/article/details/10366227
相关文章推荐
- 怎么获取Android应用程序的上下文
- Fragment怎么获取上下文?
- jquery怎么获取整个<DIV>...</DIV>包涵中的所有代码
- clientid:怎么获取控件id的名字,用ClientID这样得到id名字
- Js 怎么遍历json对象所有key及根据动态key获取值
- 怎么在Android中设置一个color.xml快速获取颜色
- iOS怎么获取设置是否开启消息通知
- WebSphere的web工程中怎么获取数据源
- jQuery怎么获取<c:forEach>标签的值
- Android调用百度api 获取经纬度以及地图 demo你怎么可以那么坑我????
- 怎么来获取其他进程中DBGrid的文本内容啊
- js获取上下文路径
- 怎么获取当前的点击事件的标签id
- 百度地图不能从定位的BDLocation里获取地址怎么办?
- 十二种获取Spring的上下文环境ApplicationContext的方法
- Android开发怎么获取美工素材
- 注册Ocx控件后怎么获取它的classid,急用!…(已解决)
- 怎么获取大量新鲜可用的迅雷白金会员账号!?
- android 教你怎么获取AndroidManifest.xml文件中的meta-data数据
- 【Android学习笔记】手机中data文件夹点不开怎么办?三步教你获取数据库文件