安卓 Context 上下文+应用共享概括

主题概括:
Context ——– 翻译: 上下文

Activity的上下文对象(通常是指Activity)

Application —- 翻译: 应用

整个APP的上下文对象(通常指全局共享 )

可以理解为:
Context是当前页面对象
Application是当前软件对象

问题:
1.Application的作用是什么?
实现整个APP的全局数据共享(比页面传递更加的效率)

2.Applicatio 具体用法?
1.类的继承应用 封装变量
2.配置清单加入name
3.((APP)getApplication())对象的getset

下文案例:
为了验证效果,一个应用,加入了两个入口.
目的: 实现全软件数据共享
1.继承应用 封装变量

public class APP extends Application {
private String str="共享的数据:这是默认数据111!";
   public String getStr() {
       return str;
    }
   public void setStr(String str) {
       this.str = str;
    }
}

2.配置清单加入name

    <application
        android:name="com.example.jk_android61.APP"
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        ..........
        ..........
        </application>

3.实例代码
文本默认显示共享内容
点击按钮后
输入框的数据传给共享
安卓 Context 上下文+应用共享概括_第1张图片
l

public class MainActivity2 extends Activity implements OnClickListener {

    private TextView text1;
    private EditText edit1;
    private Button button;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        text1=(TextView) findViewById(R.id.text1);
        edit1=(EditText) findViewById(R.id.edit1);

        text1.setText("共享的数据是:"+((APP)getApplication()).getStr()); //1.默认显示 共享的数据
        button=(Button) findViewById(R.id.butt1);
            button.setOnClickListener(this);
    }
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.butt1:
            ((APP)getApplicationContext()).setStr(edit1.getText().toString());  //2.共享数据 设置输入框内容
             text1.setText("共享的数据是:"+edit1.getText().toString());           //3.文本显示: 输入框内容
            break;

        }
    }
}

3.应用也是有生命周期的

应用 的创建方法在 页面 创建之前

参考资料:
博友博客: Application context和Activity context的区别
视频资料:极客学院Context

你可能感兴趣的:(软件)