Android學習筆記–通過Application傳遞資料程式碼範例

來源:互聯網
上載者:User

在整個Android程式中,有時需要儲存某些全域的資料(如:使用者資訊),方便在程式的任何地方調用。在Activity之間資料傳遞中有一種比較使用的方式,就是全域對象,使用過J2EE的都應該知道JavaWeb的四個範圍,其中Application域在應用程式的任何地方都可以使用和訪問,除非是Web伺服器停止,Android中的全域對象非常類似於JavaWeb中的Application域,除非是Android應用程式清除記憶體,否則全域對象將一直可以訪問。

在啟動Application時,系統會建立一個PID,即進程ID,所有的Activity就會在此主進程上運行。所以,在同一Application中所有的Activity都可以通過Activity.getApplication()方法擷取到同一個Application對象,繼承Application類,即可訪問自訂資料。

簡單來說,使用Application傳遞資料步驟如下:
建立新class,取名MyApp,繼承android.app.Application父類,並在MyApp中定義需要儲存的屬性,如:使用者名稱,使用者類型。
在Activity中,通過Activity.getApplication()方法擷取到MyApp對象(需要強制轉換),對其資料進行操作。
修改AndroidManifest.xml檔案中的application節點的android:name屬性(android:name=".MyApp")。

程式碼範例
步驟一: 複製代碼 代碼如下:public class MyApp extends Application {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
setName("Dick");
}
}

步驟二: 複製代碼 代碼如下:public class MainActivity extends Activity {
private Button btn;
private MyApp myApp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn=(Button)this.findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
myApp=(MyApp)getApplication();
myApp.setName("jack");
Intent intent=new Intent(MainActivity.this, otherActivity.class);
startActivity(intent);
}
});
}
}

步驟三: 複製代碼 代碼如下:<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="cn.bgxt.staticchuandi"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<application
android:name=".MyApp"
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="cn.bgxt.staticchuandi.MainActivity"
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=".otherActivity"/>
</application>
</manifest>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.