欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android学习笔记--通过Application传递数据代码示例

程序员文章站 2023-08-12 19:02:42
在整个android程序中,有时需要保存某些全局的数据(如:用户信息),方便在程序的任何地方调用。在activity之间数据传递中有一种比较使用的方式,就是全局对象,使用过...
在整个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>