Android下关于Application的使用

1、Application和Activity,Service一样,是android框架的一个系统组件,当android程序启动时系统会创建一个 application对象,用来存储系统的一些信息。通常我们是不需要指定一个Application的,这时系统会自动帮我们创建,如果需要创建自己 的Application,也很简单创建一个类继承 Application并在manifest的application标签中进行注册(只需要给Application标签增加个name属性把自己的 Application的名字定入即可)。

2、ndroid系统会为每个程序运行时创建一个Application类的对象且仅创建一个,所以Application可以说是单例 (singleton)模式的一个类.且application对象的生命周期是整个程序中最长的,它的生命周期就等于这个程序的生命周期。因为它是全局 的单例的,所以在不同的Activity,Service中获得的对象都是同一个对象。所以通过Application来进行一些,数据传递,数据共享 等,数据缓存等操作。


//创建一个DemoApplication类继承Application实现onCreate()方法

publicclassDemoApplicationextendsApplication{publicStringname="tom";publicvoidonCreate(){super.onCreate();Log.v("zd","CustomApplication---------------onCreate");setName(name);}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}}


//在需要使用的地方调用DemoApplication中的数据,达到数据共享

publicclassMainActivityextendsActivity{privateDemoApplicationapp;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Log.v("zd","MainActivity---------------onCreate");app=(DemoApplication)getApplication();Log.v("zd",app.getName());}protectedvoidonStop(){super.onStop();Log.v("zd","MainActivity---------------onStop");}protectedvoidonDestory(){super.onDestroy();Log.v("zd","MainActivity---------------onDestory");}}

//Manifest中在Application中增加name属性即name="DemoApplication"

<?xmlversion="1.0"encoding="utf-8"?><manifestxmlns:android="http://schemas.android.com/apk/res/android"package="com.example.test02"android:versionCode="1"android:versionName="1.0"><uses-sdkandroid:minSdkVersion="8"android:targetSdkVersion="18"/><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme"android:name="DemoApplication"><activityandroid:name="com.example.test02.MainActivity"android:label="@string/app_name"><intent-filter><actionandroid:name="android.intent.action.MAIN"/><categoryandroid:name="android.intent.category.LAUNCHER"/></intent-filter></activity></application></manifest>

//注意在DemoApplication中不可以执行耗时操作,否则会影响程序的启动时间