android不同activity之间共享数据解决方法
程序员文章站
2023-12-05 17:45:58
最近做局域网socket连接问题,要在多个activity之间公用一个socket连接,就在网上搜了下资料,感觉还是application方法好用,帖出来分享下! andr...
最近做局域网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 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");
不过在多个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;
}
}
在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();
...
}
}
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 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");
不过在多个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;
}
}
在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();
...
}
}
推荐阅读
-
android不同activity之间共享数据解决方法
-
Android编程实现两个Activity之间共享数据及互相访问的方法
-
关于Android Activity之间传递数据的6种方式
-
Android 不同Activity间数据的传递 Bundle对象的应用
-
Android Activity之间的数据传递方法总结
-
关于Android Activity之间传递数据的6种方式
-
Android Activity之间的数据传递方法总结
-
Android 入门第十讲02-广播(广播概述,使用方法(系统广播,自定义广播,两个activity之间的交互和传值),EventBus使用方法,数据传递,线程切换,Android的系统广播大全)
-
android activity之间数据传递更新UI(二)
-
android基础学习-android篇day17-Activity之间数据传递方式