3

我今天刚开始 Android 开发,如果我遗漏了什么,请多多包涵。

在我的 MainActivity 中,我有 IP 和端口的文本字段,以及一个按钮,可以让我Activity2使用传递这些值的 Intent。

现在,Activity2我创建了一个套接字连接,我有一个 4 个按钮,可以将我带到 4 个不同的活动Activity2a、、、、。Activity2bActivity2cActivity2d

现在在这些活动中,我需要我输入的那些 IP 和端口值以及MainActivitysocketActivity2.

我怎样才能访问这些?好的,我可以将这些 IP 和端口值从Activity2to转发Activity2b,但这似乎有点 hacky。有没有办法创建可以在整个过程中访问的值?

另外,socket变量呢?我怎样才能使用它Activity2b

4

3 回答 3

0

为什么不从 BaseActivity 继承所有活动,而此活动从 Activity 继承。

BaseActivity 可以保存可以在其他活动中访问的静态值。或者,您可以在自定义Application类中包含这些值。可以在整个应用程序中访问应用程序类。

另一个选项是用来SharedPreferences保存这些整数。

于 2013-10-16T23:11:43.417 回答
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)
于 2013-10-16T23:29:15.650 回答
0

在 Intents 中传递原始数据很好,并且是 Android 中的常见做法。但是,您应该仔细阅读管理活动生命周期,因为在 Android 应用程序中可能存在许多状态,因此很容易丢失数据句柄。

至于您的套接字连接,您可能想要使用一个Service,或者可能是一个IntentService,请参阅在后台服务中运行IntentService特别是会设置你,这样你就不会用长时间运行的网络任务阻塞主(UI)线程。

因此,无需在您的活动中创建和访问套接字连接,您只需将原始数据(例如 IP 和端口)传递给您Service的. 在该服务的 onCreate 中,您将初始化套接字,在其 OnDestroy 中,您可以关闭连接。IntentActivity

这可能看起来有点矫枉过正,但这些模式是构建响应性、可维护性和稳定的 Android 应用程序的基石。

使用Fragments展平 Activity 类的奖励积分。

干杯。

于 2013-10-17T01:49:49.090 回答