Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android -- Context(Application的應用)

Android -- Context(Application的應用)

編輯:關於Android編程

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




    

    
        
            
                

                
            
        
        

            
                

                
            
        
    


代碼中的12行,這裡我們需要配置上我們創建Application對象的路徑。
代碼17到35行,我們可以看出配置2個activity,並且都是入口程序,詳見intent-filter中的代碼。目的是為了在手機上展示2個應用入口圖標,便於測試Application的數據共享。

3、下面是2個Activity的VIEW視圖,每個VIEW頁面增加1個textview、1個editview、1個button



    

    

    


    

    

    

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. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved