在整个应用程序中保留一组值

时间:2013-10-16 22:57:46

标签: android

我今天刚刚开始Android开发,所以如果我错过了什么,请耐心等待。

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

现在在Activity2我创建了一个套接字连接,我有一个4个按钮,可以带我到4个不同的活动Activity2aActivity2bActivity2c,{{1 }}

现在,在这些活动中,我需要在Activity2d中输入的IP和端口值以及我在MainActivity中创建的socket

我如何访问这些?好吧,我可以将这些IP和端口值从Activity2转发到Activity2,但这看起来有点笨拙。有没有办法创建可以在整个过程中访问的值?

另外,Activity2b变量怎么样?如何在socket中使用它?

3 个答案:

答案 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应用程序中可能存在许多状态,因此很容易丢失数据句柄。

至于您的套接字连接,您可能想要使用ServiceIntentService,请参阅Running in a Background ServiceIntentService特别会设置你,这样你就不会使用长时间运行的网络任务来阻止主(UI)线程。

因此,您只需将基本数据(例如IP和端口)传递给Service Intent Activity,而不是在您的活动中创建和访问套接字连接。在该服务的onCreate中,您将初始化套接字,并且在其OnDestroy中,您可以关闭连接。

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

使用Fragments展示您的活动类的加分点。

干杯。