Android常用开发使用全局Application

1.编写全局Application,便于管理系统启动退出时的Activity,Service等管理

public class ChatApplication extends Application {
    private List<Activity> activitys = new LinkedList<Activity>();

    private List<Service> services = new LinkedList<Service>();

    @Override
    public void onCreate() {
        super.onCreate();
    }

    public void addActivity(Activity activity) {
        activitys.add(activity);
    }

    public void removeActivity(Activity activity) {
        activitys.remove(activity);
    }

    public void addService(Service service) {
        services.add(service);
    }

    public void removeService(Service service) {
        services.remove(service);
    }

    public void closeApplication() {
        closeActivitys();
        closeServices();
    }

    private void closeActivitys() {
        ListIterator<Activity> iterator = activitys.listIterator();
        while (iterator.hasNext()) {
            Activity activity = iterator.next();
            if (activity != null) {
                activity.finish();
            }
        }
    }

    private void closeServices() {
        ListIterator<Service> iterator = services.listIterator();
        while (iterator.hasNext()) {
            Service service = iterator.next();
            if (service != null) {
                stopService(new Intent(this, service.getClass()));
            }
        }
    }
}

2. 编写AndroidManifest.xml

    <application
        android:name="com.cbooy.chat.ChatApplication"
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.cbooy.chat.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

3. 编写BaseActivity和BaseService

public abstract class BaseActivity extends FragmentActivity {

    @Override
    protected void onCreate(Bundle bundle) {
        super.onCreate(bundle);
        ((ChatApplication) getApplication()).addActivity(this);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        ((ChatApplication) getApplication()).removeActivity(this);
    }
}
public abstract class BaseService extends Service {

    @Override
    public void onCreate() {
        super.onCreate();

        ((ChatApplication)getApplication()).addService(this);
    }

    @Override
    public void onDestroy() {
        super.onDestroy();

        ((ChatApplication)getApplication()).removeService(this);
    }
}

4. 编写普通Activity和Service分别继承自BaseActivity和BaseService

public class LogoActivity extends BaseActivity

这只是一个架子,以后可以在Application中放一些全局的信息,可以方便管理和调用

时间: 2024-10-23 16:24:51

Android常用开发使用全局Application的相关文章

Android 常用开发工具以及Mac常用软件

Android 常用的开发工具记录.其中包括AndroidStudio(IDEA)插件.Mac 上好用的软件以及国内知名Android开发者博客等. Android Studio 插件 codota 插件,提供高质量的Android代码片段搜索,官方网站codota官网 Android 网站 Android Developer Androuid 官网,不解释. AndroidDevTool 国人维护的Android开发工具的整理. Android Arsenal 各种各样的Android开源库的

Come on , Android 常用开发工具

转载自:http://codingfish.top/2015/07/07/android-developer-tools-list/ Android 网站 Android Developer Androuid 官网,不解释. AndroidDevTool 国人维护的Android开发工具的整理. Android Arsenal 各种各样的Android开源库的推荐. Android Weekly Android周报,干货集锦. Stack Overflow StackOverflow 能查到的问

Android应用开发中全局异常的捕获

最近在做个项目,需要在程序出现运行时异常和错误导致程序crash时进行一些操作,找到一个方法 Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() {// 给主线程设置一个处理运行时异常的handler public void uncaughtException(Thread thread, final Throwable ex) { ex.printStackTrace(); //当程序出现crash时

android常用开发工具的用法

1.在命令行创建.删除和浏览AVD 管理AVD需要Android SDK目录下的tools子目录下的android命令,android+下面的命令 list:列出机器上所有已经安装的android版本和AVD设备. list avd:列出机器上所有已经安装的android版本. list target:列出机器上所有已经安装的android版本. create avd:创建一个avd设备. move avd:移动或者重命名一个avd设备 delete avd:删除一个avd设备 update a

Android无线开发的几种常用技术(阿里巴巴资深工程师原创分享)

本文由阿里巴巴移动安全客户端.YunOS资深工程师Hao(嵌入式企鹅圈原创团队成员)撰写,是Hao在嵌入式企鹅圈发表的第一篇原创文章,对Android无线开发的几种常用技术进行综述. 嵌入式企鹅圈现拥有七个专栏(Linux内核驱动情景分析.资源紧缺型SOC嵌入式架构设计.嵌入式交叉工具链及其应用.嵌入式设计和编程.微信硬件平台和物联网解决方案.Android开发.开发资源共享).更多Android.Linux.嵌入式和物联网原创技术分享敬请关注微信公众号:嵌入式企鹅圈.我们百分百原创,资深工程师

Android NDK开发指南---Application.mk文件和android.mk文件

https://android.googlesource.com/platform/development/+/donut-release/ndk/docs/OVERVIEW.TXT https://android.googlesource.com/platform/ndk/+/4e159d95ebf23b5f72bb707b0cb1518ef96b3d03/docs/ANDROID-MK.TXT https://android.googlesource.com/platform/ndk/+/4

【读书笔记-《Android游戏编程之从零开始》】3.Android 游戏开发常用的系统控件(Button、Layout、ImageButton)

3.1 Button Button这控件不用多说,就是一个按钮,主要是点击后进行相应事件的响应. 给组件添加ID属性:定义格式为 android:id="@+id/name",这里的name是自定义的,不是索引变量."@+"表示新声明,"@"表示引用,例如:"@+id/tv" 表示新声明一个id,是id名为tv的组件:"@id/tv" 表示引用id名为tv的组件. 给按钮添加点击事件响应  想知道按钮是否被

【读书笔记-《Android游戏编程之从零开始》】8.Android 游戏开发常用的系统控件(系统控件常见问题)

Android 中常用的计量单位Android有时候需要一些计量单位,比如在布局Layout文件中可能需要指定具体单位等.常用的计量单位有:px.dip(dp).sp,以及一些不常用的pt.in.mm.下面详细介绍下这些计量单位之间的区别和联系.in:英寸(长度单位):mm:毫米(长度单位):pt:磅/点,1/72英寸(一个标准的长度单位):sp:全名 scaled pixels-best for text size,放大像素,与刻度无关,可以根据用户的字体大小就行缩放,主要用来处理字体的大小:

【读书笔记-《Android游戏编程之从零开始》】7.Android 游戏开发常用的系统控件(Dialog)

在Android应用开发中,Dialog(对话框)创建简单且易于管理因而经常用到,对话框默认样式类似创建样式的Activity.首先介绍android.app.AlertDialog下的Builder这个类.Builder是AlertDialog类的子类,而且还是它的内部类.正如其名所示,Builder相当于一个具体的构造者,通过Builder设置对话框属性,然后将Builder(对话框)显示出来. 本人做了个Dialog显示效果集合的小Demo,效果如下(GIF图片较大,需要点加载时间): 主