我今天刚刚开始Android开发,所以如果我错过了什么,请耐心等待。
在我的MainActivity中,我有IP和端口的文本字段,以及使用传递这些值的Intent将我带到Activity2
的按钮。
现在在Activity2
我创建了一个套接字连接,我有一个4个按钮,可以带我到4个不同的活动Activity2a
,Activity2b
,Activity2c
,{{1 }}
现在,在这些活动中,我需要在Activity2d
中输入的IP和端口值以及我在MainActivity
中创建的socket
。
我如何访问这些?好吧,我可以将这些IP和端口值从Activity2
转发到Activity2
,但这看起来有点笨拙。有没有办法创建可以在整个过程中访问的值?
另外,Activity2b
变量怎么样?如何在socket
中使用它?
答案 0 :(得分:0)
为什么不从BaseActivity继承所有活动,并且此活动继承自Activity。
BaseActivity可以保存可以在其他活动中访问的静态值。
或者,您可以在自定义Application
课程中使用这些值。可以在整个应用程序中访问应用程序类。
另一种选择是使用SharedPreferences
来保存这些整数。
答案 1 :(得分:0)
只需在SharedPreferences
主要活动:
SharedPreferences prefs;
Editor editor;
protected void onCreate(Bundle savedInstanceState) {
prefs = PreferenceManager.getDefaultSharedPreferences(this);
//prefs.registerOnSharedPreferenceChangeListener( this );
editor = prefs.edit();
editor.putString("STRING_1", "first String");
editor.putInt("INT_1", arg1)
editor.commit();
//other stuff in onCreate
其他活动
SharedPreferences prefs;
String mSTring = prefs.getString("STRING_1", arg1);
Integer mInt = prefs.getInt("INT_1", defValue)
答案 2 :(得分:0)
在Intents中传递原始数据很好,这是Android中的常见做法。但是,您应该仔细阅读Managing the Activity Lifecycle,因为由于Android应用程序中可能存在许多状态,因此很容易丢失数据句柄。
至于您的套接字连接,您可能想要使用Service
或IntentService
,请参阅Running in a Background Service。 IntentService
特别会设置你,这样你就不会使用长时间运行的网络任务来阻止主(UI)线程。
因此,您只需将基本数据(例如IP和端口)传递给Service
Intent
Activity
,而不是在您的活动中创建和访问套接字连接。在该服务的onCreate中,您将初始化套接字,并且在其OnDestroy中,您可以关闭连接。
这可能看起来有点过分,但这些模式是构建响应性,可维护性和稳定性Android应用程序的基石。
使用Fragments展示您的活动类的加分点。
干杯。