Android应用程序的全局对象

时间:2012-03-16 06:16:41

标签: java android

我正在开发一个Android应用程序。 我有一些活动。我必须有一个可以从所有活动中获得的对象。 任何想法如何组织它?

4 个答案:

答案 0 :(得分:11)

以下列方式使用全局Application对象:

package com.yourpackagename;

public class App extends Application {
}

AndroidManifest.xml

<application android:name=".App">

要从Activity

访问它
App globalApp = (App) getApplicationContext();

应用程序启动时,App类将自动实例化。只要申请流程有效,它就可以使用。它可以作为一个全球商店,您可以在其中放置您的东西,并在整个应用程序生命周期内访问它们。

答案 1 :(得分:3)

有几种方法可以做到这一点。如果您要共享的对象是一个String(或者很容易用String描述),我建议Shared Preferences。它用作在应用程序内共享数据的键值存储。

如果不是这种情况(即字符串的适用性),您可以考虑将其作为额外内容传递给启动各种活动的Intent。例如:

Intent newActivity = new Intent(CurrentActivity.class, ActivityToLaunch.class);
newActivity.putExtra("object_key", Bundle_With_Your_Object);

有关此策略的更多详细信息(特别是关于Bundle类,如果您不熟悉),我会阅读this Android doc

答案 2 :(得分:1)

在这种情况下,您可以使用SharedPreferences:

添加或修改:

SharedPreferences prefs = this.getSharedPreferences("Cusom Name", Activity.MODE_PRIVATE);
prefs.edit().putString("your_key", value).commit();

要清除:

SharedPreferences prefs = this.getSharedPreferences("Cusom Name", Activity.MODE_PRIVATE);
prefs.edit().clear();

获取价值:

SharedPreferences prefs = this.getSharedPreferences("Cusom Name", Activity.MODE_PRIVATE);               
String value = prefs.getString("your_key", "");

答案 3 :(得分:0)

首先,创建一个名为MasterActivity的类,它扩展Activity并定义您的全局对象。

public class MasterActivity extends Activity
{
     public Object mObject;
}

然后,您必须使用您的MasterActivity扩展您的主要活动类:

// your main activity
public class MainActivity extends MasterActivity
{
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        // you can now use mObject in your main class
        mObject.yourmethod();
    }
}

通过这种方式,您只需通过扩展MasterActivity而不是Activity,就可以在所有活动中使用您的对象。