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()方法
public class DemoApplication extends Application{
public String name = "tom";
public void onCreate(){
super.onCreate();
Log.v("zd", "CustomApplication---------------onCreate");
setName(name);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
//在需要使用的地方调用DemoApplication中的数据,达到数据共享
public class MainActivity extends Activity {
private DemoApplication app;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.v("zd", "MainActivity---------------onCreate");
app = (DemoApplication) getApplication();
Log.v("zd", app.getName());
}
protected void onStop() {
super.onStop();
Log.v("zd", "MainActivity---------------onStop");
}
protected void onDestory(){
super.onDestroy();
Log.v("zd", "MainActivity---------------onDestory");
}
}
//Manifest中在Application中增加name属性即name="DemoApplication"
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.test02"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
android:name="DemoApplication" >
<activity
android:name="com.example.test02.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>
</manifest>
//注意在DemoApplication中不可以执行耗时操作,否则会影响程序的启动时间
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。