android:Application

、很多情况下,我们需要多个组件之间进行数据的共享。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(new View.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 会比Activity onCreate 先执行
 *
很方便我们做一些初始化操作
 *
不管启动的那个Activity Application onCreate 会首先执行
 */
@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(int level) {
    super.onTrimMemory(level);
}
/*配置发生改变的时候会执行*/
@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值