首先,在一个Android程序中,有且只有一个Application对象,在程序启动的时候,首先执行Application的onCreate方法,这是一个Android应用的入口,在开发中,我们常常自定义一个MyApplication用来执行某些操作。由于在一个程序中,有且只有一个Application对象,所以我们可以使用单例设计模式,(这句话是错误的!因为单例模式需要把构造函数私有,但是Application的构造函数是不能私有的,所以不能使用单例模式,其实也没有必要这样做)(http://www.cnblogs.com/oversea201405/p/3749546.html)
Application的使用:
1.写一个自定义Application类,继承自Application。GoogleMarketApplication.java
package com.example.rgd.googlemarket.globe; import android.app.Application; import android.content.Context; import android.os.Handler; /** * Created by rgd on 2017/2/16. */ public class GoogleMarketApplication extends Application { /** * 自定义application, 进行全局初始化 */ private static Context context; private static Handler handler; private static int mainThreadID; @Override public void onCreate() { super.onCreate(); context = getApplicationContext(); handler = new Handler(); mainThreadID = android.os.Process.myTid();//主线程ID } public static Context getContext() { return context; } public static Handler getHandler() { return handler; } public static int getMainThreadID() { return mainThreadID; } }
2.接下来需要告知系统,当程序启动的时候应该初始化GoogleMarketApplication,而不是默认的APPApplication类。这一步需要在 Android Manifest.xml中配置
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.rgd.googlemarket"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="谷歌电子市场" android:name=".globe.GoogleMarketApplication"//此为配置内容 android:supportsRtl="true" android:theme="@style/Theme.AppCompat.Light"> <activity android:name=".ui.activity.MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>