Android學(xué)習(xí)筆記--通過(guò)Application傳遞數(shù)據(jù)代碼示例
更新時(shí)間:2013年06月19日 16:49:27 作者:
使用Application傳遞數(shù)據(jù)步驟如下:創(chuàng)建新class,取名MyApp,繼承android.app.Application父類(lèi),并在MyApp中定義需要保存的屬性
在整個(gè)Android程序中,有時(shí)需要保存某些全局的數(shù)據(jù)(如:用戶(hù)信息),方便在程序的任何地方調(diào)用。在Activity之間數(shù)據(jù)傳遞中有一種比較使用的方式,就是全局對(duì)象,使用過(guò)J2EE的都應(yīng)該知道JavaWeb的四個(gè)作用域,其中Application域在應(yīng)用程序的任何地方都可以使用和訪(fǎng)問(wèn),除非是Web服務(wù)器停止,Android中的全局對(duì)象非常類(lèi)似于JavaWeb中的Application域,除非是Android應(yīng)用程序清除內(nèi)存,否則全局對(duì)象將一直可以訪(fǎng)問(wèn)。
在啟動(dòng)Application時(shí),系統(tǒng)會(huì)創(chuàng)建一個(gè)PID,即進(jìn)程ID,所有的Activity就會(huì)在此主進(jìn)程上運(yùn)行。所以,在同一Application中所有的Activity都可以通過(guò)Activity.getApplication()方法獲取到同一個(gè)Application對(duì)象,繼承Application類(lèi),即可訪(fǎng)問(wèn)自定義數(shù)據(jù)。
簡(jiǎn)單來(lái)說(shuō),使用Application傳遞數(shù)據(jù)步驟如下:
創(chuàng)建新class,取名MyApp,繼承android.app.Application父類(lèi),并在MyApp中定義需要保存的屬性,如:用戶(hù)名,用戶(hù)類(lèi)型。
在Activity中,通過(guò)Activity.getApplication()方法獲取到MyApp對(duì)象(需要強(qiáng)制轉(zhuǎn)換),對(duì)其數(shù)據(jù)進(jìn)行操作。
修改AndroidManifest.xml文件中的application節(jié)點(diǎn)的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>
在啟動(dòng)Application時(shí),系統(tǒng)會(huì)創(chuàng)建一個(gè)PID,即進(jìn)程ID,所有的Activity就會(huì)在此主進(jìn)程上運(yùn)行。所以,在同一Application中所有的Activity都可以通過(guò)Activity.getApplication()方法獲取到同一個(gè)Application對(duì)象,繼承Application類(lèi),即可訪(fǎng)問(wèn)自定義數(shù)據(jù)。
簡(jiǎn)單來(lái)說(shuō),使用Application傳遞數(shù)據(jù)步驟如下:
創(chuàng)建新class,取名MyApp,繼承android.app.Application父類(lèi),并在MyApp中定義需要保存的屬性,如:用戶(hù)名,用戶(hù)類(lèi)型。
在Activity中,通過(guò)Activity.getApplication()方法獲取到MyApp對(duì)象(需要強(qiáng)制轉(zhuǎn)換),對(duì)其數(shù)據(jù)進(jìn)行操作。
修改AndroidManifest.xml文件中的application節(jié)點(diǎn)的android:name屬性(android:name=".MyApp")。
代碼示例
步驟一:
復(fù)制代碼 代碼如下:
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");
}
}
步驟二:
復(fù)制代碼 代碼如下:
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);
}
});
}
}
步驟三:
復(fù)制代碼 代碼如下:
<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>
您可能感興趣的文章:
- Android package屬性、package name和Application ID三者的聯(lián)系及區(qū)別
- Android Application類(lèi)的詳細(xì)介紹
- Android開(kāi)發(fā) -- setTag的妙用和The key must be an application-specific resource id 異常
- Android開(kāi)發(fā)中避免應(yīng)用無(wú)響應(yīng)的方法(Application Not Responding、ANR)
- Android獲取應(yīng)用程序名稱(chēng)(ApplicationName)示例
- Android Application存取公共數(shù)據(jù)的實(shí)例詳解
相關(guān)文章
Flutter音樂(lè)播放插件audioplayers使用步驟詳解
audioplayers是一個(gè)可以支持同時(shí)播放多個(gè)音頻文件的Flutter的插件,可以播放多個(gè)同時(shí)的音頻文件,這篇文章主要介紹了audioplayers的使用步驟,感興趣想要詳細(xì)了解可以參考下文2023-05-05
Android編程中Handler原理及用法實(shí)例分析
這篇文章主要介紹了Android編程中Handler用法,結(jié)合實(shí)例形式分析了Handler的功能,原理及使用技巧,需要的朋友可以參考下2016-01-01
Flutter監(jiān)聽(tīng)當(dāng)前頁(yè)面可見(jiàn)與隱藏狀態(tài)的代碼詳解
文章介紹了如何在Flutter中使用路由觀(guān)察者來(lái)監(jiān)聽(tīng)?wèi)?yīng)用進(jìn)入前臺(tái)或后臺(tái)狀態(tài)以及頁(yè)面的顯示和隱藏,并通過(guò)代碼示例講解的非常詳細(xì),需要的朋友可以參考下2025-03-03
Android仿微信QQ聊天頂起輸入法不頂起標(biāo)題欄的問(wèn)題
這篇文章主要介紹了Android之仿微信QQ聊天頂起輸入法不頂起標(biāo)題欄問(wèn)題,本文實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-11-11
Android xml文件的序列化實(shí)現(xiàn)代碼
Android提供了XmlSerializer來(lái)實(shí)現(xiàn)XML文件的序列化。相比傳統(tǒng)方式,更高效安全,需要的朋友可以參考下2014-02-02
Apache?Cordova?Android原理應(yīng)用實(shí)例詳解
這篇文章主要為大家介紹了Apache?Cordova?Android原理應(yīng)用實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
Android實(shí)現(xiàn)帶指示點(diǎn)的自動(dòng)輪播無(wú)限循環(huán)效果
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)帶指示點(diǎn)的自動(dòng)輪播無(wú)限循環(huán)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11
Flutter 實(shí)現(xiàn)虎牙/斗魚(yú) 彈幕功能
這篇文章主要介紹了Flutter 實(shí)現(xiàn)虎牙/斗魚(yú) 彈幕功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04

