最近做局域网socket连接问题,要在多个activity之间公用一个socket连接,就在网上搜了下资料,感觉还是application方法好用,帖出来分享下!
android中在不同activity中传递变量,通常使用intent中bundle添加变量的操作方法。
保存参数时:
复制代码 代码如下:
intent intent = new intent();
intent.setclass(a.this, b.class);
bundle bundle = new bundle();
bundle.putstring(“name”, “xiaozhu”);
intent.putextras(bundle);
startactivity(intent);
intent.setclass(a.this, b.class);
bundle bundle = new bundle();
bundle.putstring(“name”, “xiaozhu”);
intent.putextras(bundle);
startactivity(intent);
读取参数:
复制代码 代码如下:
intent intent = this.getintent();
bundle bundle = intent.getextras();
string name = bundle.getstring(“name”);
[java] view plaincopy
intent intent = this.getintent();
bundle bundle = intent.getextras();
string name = bundle.getstring(“name”);
bundle bundle = intent.getextras();
string name = bundle.getstring(“name”);
[java] view plaincopy
intent intent = this.getintent();
bundle bundle = intent.getextras();
string name = bundle.getstring(“name”);
不过在多个activity中经常使用同一变量时,使用bundle则比较麻烦,每次调用activity都需要设置一次。
如想在整个应用中使用,在java中一般是使用静态变量,而在android中有个更优雅的方式是使用application context。
新建一个类,继承自application
复制代码 代码如下:
class myapp extends application {
private string mystate;
public string getstate() {
return mystate;
}
public void setstate(string s) {
mystate = s;
}
}
private string mystate;
public string getstate() {
return mystate;
}
public void setstate(string s) {
mystate = s;
}
}
在androidmanifest.xml的application加个name属性就可以了,如下面所示:
复制代码 代码如下:
<application android:name=”.myapp” android:icon=”@drawable/icon” android:label=”@string/app_name”>
使用时:
复制代码 代码如下:
class blah extends activity {
@override
public void oncreate(bundle b){
…
myapp appstate = ((myapp)getapplicationcontext());
string state = appstate.getstate();
…
}
}
@override
public void oncreate(bundle b){
…
myapp appstate = ((myapp)getapplicationcontext());
string state = appstate.getstate();
…
}
}
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/addevelopment/938183.html