標籤:
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資料共用