Android学习笔记--通过Application传递数据代码示例
2023-06-13 09:15:02 时间
在整个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")。
代码示例
步骤一:
复制代码代码如下:
在启动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")。
代码示例
步骤一:
publicclassMyAppextendsApplication{
privateStringname;
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
@Override
publicvoidonCreate(){
//TODOAuto-generatedmethodstub
super.onCreate();
setName("Dick");
}
}
步骤二:
publicclassMainActivityextendsActivity{
privateButtonbtn;
privateMyAppmyApp;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn=(Button)this.findViewById(R.id.btn);
btn.setOnClickListener(newView.OnClickListener(){
@Override
publicvoidonClick(Viewv){
//TODOAuto-generatedmethodstub
myApp=(MyApp)getApplication();
myApp.setName("jack");
Intentintent=newIntent(MainActivity.this,otherActivity.class);
startActivity(intent);
}
});
}
}
步骤三:
<manifestxmlns: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>
<actionandroid:name="android.intent.action.MAIN"/>
<categoryandroid:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activityandroid:name=".otherActivity"/>
</application>
</manifest>
相关文章
- android 浏览器 开发,Android 浏览器的开发实例分享
- android bindservice方法,Android bindservice方法返回false
- android短信验证码方案,Android之短信验证码
- android短信验证码方案,Android开发之属于你的短信验证码(一)
- android telephony 原理解析与开发指南_Android逆向pdf
- android apk防止反编译_android 反编译
- Android触摸事件_android设置按钮点击事件
- Android 编译_android线程
- Android保存图片到相册(适配android 10以下及以上)
- Android开发笔记(一百八十八)工作管理器WorkManager
- android 复制控件,Android长按复制文本功能[通俗易懂]
- Android SDK Tools_android.intent.category.DEFAULT
- 学习笔记 | Android开发常用的几种模式
- Android开发学习笔记之 获得Android 可使用内存
- Android studio更新后出现警告:Warning:The `android.dexOptions.incremental` property is deprecated and it has
- 【Android】Source Insight 基本用法 ( 导入 Android 源码 | 设置字体 | 显示行号 | 搜索功能 | 快捷键设置 )
- 【ijkplayer】编译 Android 版本的 ijkplayer ⑥ ( 进入 ijkplayer-android/android 目录 | 执行 compile-ijk.sh 脚本完成编译 )
- Android开发中遇到的问题(三)——eclipse创建android项目无法正常预览布局文件详解手机开发
- android插件化之路详解手机开发
- Freeline–Android平台上的秒级编译方案详解手机开发
- android MVP框架详解手机开发
- android版本检测Android程序的版本检测与更新实现介绍
- android中实现指针滑动的动态效果方法
- 为Android应用增加渠道信息自动化不同渠道的打包过程的使用详解
- Android笔记之:onConfigurationChanged详解
- Android笔记之:在ScrollView中嵌套ListView的方法
- Android开发笔记之:一分钟学会使用Logcat调试程序的详解
- Android中HttpURLConnection与HttpClient使用的简单实例
- Android学习笔记——Menu介绍(一)
- Android学习笔记-保存数据到SQL数据库中(SavingDatainSQLDatabases)
- Android学习笔记-保存文件(SavingFiles)
- Android学习笔记(一)环境安装及第一个helloworld
- Android实现获取未接来电和未读短信数量的方法