繼承Application實現Android資料共用

來源:互聯網
上載者:User

標籤:

     Application類


    在Android中,啟動一個應用,首先會初始化Application,然後再通過它檢查AndroidManifest.xml資訊清單檔,選擇須要首先啟動的Activity。


    在Activity中能夠使用getApplication()方法獲得該Application的執行個體,使用它就能夠獲得當前應用的主題、資源檔裡的內容等,而且我們能夠通過它來加入自己的全域屬性,如User。比如開發一個遊戲,須要儲存分數,那麼我們就能夠繼承Application。

 

        首先,先寫個Application的子類:

import android.app.Application;public class GameApplication extends Application {    private int score;    public int getScore() {        return score;    }    public void setScore(int score) {        this.score = score;    }}


      然後在manifest.xml檔案裡面改動

<application android:name=".GameApplication" android:icon="@drawable/icon" android:label="@string/app_name">        <activity android:name=".DemoActivity"                  android:label="@string/app_name">            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>        <activity android:name="ResultActivity"></activity>    </application>

 

      注意到加入了android:name=".GameApplication" 。

 

      改動完了以後,再往下看:

public class DemoActivity extends Activity {    public Button button;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);             button=(Button)findViewById(R.id.button);        ((GameApplication)getApplication()).setScore(100);        button.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {Intent intent=new Intent();intent.setClass(DemoActivity.this, ResultActivity.class);startActivity(intent);}});    }}

      在這個activity裡面設定了分數,我們能夠在別的activity裡面取出來:

public class ResultActivity extends Activity {       @Override    protected void onCreate(Bundle savedInstanceState) {    // TODO Auto-generated method stub    super.onCreate(savedInstanceState);    setContentView(R.layout.other);    TextView tv=(TextView)findViewById(R.id.tv);    int score=((GameApplication)getApplicationContext()).getScore();    tv.setText("你的成績是:"+score);    }}

        這僅僅是個簡單的範例,當然,想要完畢以上功能,使用intent傳值就能夠了,這樣還顯得麻煩,可是,假設有非常多activity,使用這樣的方法就會發現非常實用,是不是使用sharepreference也能夠完畢類似功能呢,能夠,可是,效率方面就要比這個差非常多了,sharepreference主要是用來儲存資料,你能夠退出程式時把所須要儲存的簡單資料儲存到sharepreference裡面,當然複雜的資料,還得使用sqllite。

 

 

繼承Application實現Android資料共用

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.