android:Application

来源:互联网 发布:dhcp默认端口 编辑:程序博客网 时间:2024/05/21 17:35

、很多情况下,我们需要多个组件之间进行数据的共享。Context可以作为全局共享信息的桥梁。


  . 新建一个APP 类, 继承自 Application

  . 去AndroidManifest.xml 中配置信息

// android:name=".App" 通过这种方式我们就自定义Android Application
//application 才是真正的全局上下文对象。
<application
   
android:name=".App"


//通过 getApplicationContext方法 就可以获取到application 的全局对象
//实现一个全局共享的数据 App 类中写。
getApplicationContext();


  . 创建Main2 配置文件

<activity android:name=".MainActivity"android:label="Main1">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>

        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
</activity>
<activity android:name=".Main2"android:label="Main2">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>

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

    效果,是生成两个 APP ,着两个Activity 都可以启动当前的应用 Main1 启动的Main1 ,Main2启动的是Main2


2、是现实数据共享


//执行保存的操作
findViewById(R.id.main1_save_btn).setOnClickListener(newView.OnClickListener() {
    @Override
   
public void onClick(View view) {
        //在执行保存的时候,首先要获得Application,它的类型是app我们自定义的类,通过它setTextData,保存到全局Context里面
       
((App)getApplicationContext()).setTextData(et.getText().toString());
       
//在访问tv.setText()  - 同样的代码写到Main2
       
tv.setText("共享的数据是:"+et.getText().toString());

   
}
});


通过这种方式,这两个类都有了保存数据到application里面,都有读取application 里面数据的信息的能力。


tv.setText("共享的数据是:"+ getApp().getTextData());

//首先getApp() 方法。

public App getApp(){
    return (App) getApplicationContext();
}


总结:在多个Activity 里面,我们可以使用,Application 来进行数据的共享,Application 对同一应用程序里面它是唯一的,在实际开发中常用。(同一应用程序可以有多个主Activity)



3、Application 的声明周期:

  1>我们需要在程序被启动的时候,肯定会执行一些初始化操作,是否意味着有多少个入口我们就得写多少次代码?   肯定不是,  我们可以给这个应用程序配置一个自定义Application,然后在这个Application 的声明周期里面,来进行操作。

     .  

/**
 *
创建的时候会被执行  有创建就会有结束
 * Application
onCreate会比ActivityonCreate先执行
 *
很方便我们做一些初始化操作
 *
不管启动的那个ActivityApplicationonCreate会首先执行
 */
@Override
public void onCreate() {
    super.onCreate();
   
System.out.println("App onCreate");
}

/*onTerminate 一般情况下是不会执行的,只会在模拟环境下执行*/
@Override
public void onTerminate() {
    super.onTerminate();
   
System.out.printf("App Terminate");
}
/*在低内存执行   -一般情况下执行不了*/
@Override
public void onLowMemory() {
    super.onLowMemory();
}
/*onTrimMemory 程序在执行内存清理的时候回执行*/
@Override
public void onTrimMemory(intlevel) {
    super.onTrimMemory(level);
}
/*配置发生改变的时候会执行*/
@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
}


原创粉丝点击