Interface to global information about an application environment. This is an abstract class whose implementation is provided by the Android system. It allows access to application-specific resources and classes, as well as up-calls for application-level operations such as launching activities, broadcasting and receiving intents

是一个用来访问全局信息的接口(图片资源、信息资源),一些比较常用的组件继承Context接口。

Application

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

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

下面我们通过一个实例,来实现Application的数据共享。
1、我们创建一个对象,继承Application

package com.example.learncontext;import android.app.Application;public class App extends Application {    private String name = "default";    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }}

2、我们需要配置AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.learncontext" android:versionCode="1" android:versionName="1.0" >    <uses-sdk  android:minSdkVersion="8" android:targetSdkVersion="21" />    <application  android:name=".App" android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" >        <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=".BMainActivity" android:label="main2" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>    </application></manifest>

代码中的12行,这里我们需要配置上我们创建Application对象的路径。
代码17到35行,我们可以看出配置2个activity,并且都是入口程序,详见intent-filter中的代码。目的是为了在手机上展示2个应用入口图标,便于测试Application的数据共享。

3、下面是2个Activity的VIEW视图,每个VIEW页面增加1个textview、1个editview、1个button

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".BMainActivity" >    <TextView  android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" />    <EditText  android:id="@+id/editText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView1" android:layout_below="@+id/textView1" android:layout_marginTop="27dp" android:ems="10" />    <Button  android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/editText1" android:layout_below="@+id/editText1" android:layout_marginLeft="18dp" android:layout_marginTop="28dp" android:text="Button" /></RelativeLayout>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".BMainActivity" >    <TextView  android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" />    <EditText  android:id="@+id/editText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView1" android:layout_below="@+id/textView1" android:layout_marginTop="27dp" android:ems="10" />    <Button  android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/editText1" android:layout_below="@+id/editText1" android:layout_marginLeft="18dp" android:layout_marginTop="28dp" android:text="Button" /></RelativeLayout>

4、下面是2个activity中的代码

package com.example.learncontext;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;import android.widget.EditText;import android.widget.TextView;public class BMainActivity extends Activity {    private TextView textView;    private EditText editText;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_bmain);        textView = (TextView) findViewById(R.id.textView1);        editText = (EditText) findViewById(R.id.editText1);        textView.setText("获取到的共享数据是:"                + ((App) getApplicationContext()).getName());        findViewById(R.id.button1).setOnClickListener(                new View.OnClickListener() {                    @Override                    public void onClick(View v) {                        ((App) getApplicationContext()).setName(editText                                .getText().toString());                        textView.setText("获取到的共享数据是:"                                + ((App) getApplicationContext()).getName());                    }                });    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.bmain, menu);        return true;    }}
package com.example.learncontext;import android.app.Activity;import android.app.Application;import android.os.Bundle;import android.view.Menu;import android.view.View;import android.widget.EditText;import android.widget.TextView;public class MainActivity extends Activity {    private TextView textView;    private EditText editText;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        textView = (TextView) findViewById(R.id.textView1);        editText = (EditText) findViewById(R.id.editText1);        textView.setText("获取到的共享数据是:"                + ((App) getApplicationContext()).getName());        findViewById(R.id.button1).setOnClickListener(                new View.OnClickListener() {                    @Override                    public void onClick(View v) {                        ((App) getApplicationContext()).setName(editText                                .getText().toString());                        textView.setText("获取到的共享数据是:"                                + ((App) getApplicationContext()).getName());                    }                });    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.main, menu);        return true;    }}

程序中30行代码,((App) getApplicationContext()),强转成App对象,然后获取对象中的属性,通过put或get方法达到数据共享的存储和读取操作。

5、测试图如下



更多相关文章

  1. Android之自定义适配器
  2. Android(安卓)数据存储
  3. Android(安卓)数据存储
  4. android 拍照
  5. Android(安卓)Bundle类
  6. Android手机客户端与Servlet交换数据
  7. android json相关
  8. Android存储之SharedPreferences和File
  9. Android消息处理机制2——Message

随机推荐

  1. 编写App的开场Activity
  2. Android 手机上安装并运行 Ubuntu 12.04
  3. android media 播放器
  4. Android瀑布流的实现
  5. Android中JNI的使用之HelloWorld
  6. (连载)Android 8.0 : 系统启动流程之Linu
  7. Android开发(九)| android手势开发
  8. android:动态缩放和旋转图像
  9. Android(安卓)textview字体颜色显示和图
  10. Android中的基础----如何获得LinearLayou