繁体   English   中英

为整个Application创建一个公共对象

[英]Create a common object for whole Application

我创建了一个活动来创建用户个人资料并存储其信息,如姓名,身份证,个人资料等。

此信息是唯一的,应该在应用程序的所有活动中使用。

我想知道哪个是创建存储所有信息并在所有活动中使用它的公共对象的最佳方法。

我已阅读有关bundle和JSON的内容,但无法理解如何使用它。

请帮我看看我应该选择哪个选项。 我已经做了很多阅读,但现在还不确定。 请帮我解决标准事情和更好的事情。

您可以使用Application类跨多个活动访问同一对象。

public class TestApplication extends Application {

    //Object declaration

    public TestApplication () {
        // TODO Auto-generated constructor stub
    }

    @Override
    public void onCreate() { 
        // TODO Auto-generated method stub
        super.onCreate();
    }

    //setter getter for object
}

现在在您的活动中:

//after setContentView
TestApplication testAppObj = (TestApplication) getApplication();
testAppObj.setSomeObj(myObj);

//retrieve as:
someObj = testAppObj.getterMethodOfObj();

您必须在清单文件中注册Application类,就像注册活动一样:

<application
        android:name="com.pkg.test.TestApplication " />

希望这可以帮助。

您可以创建自定义应用程序(就像其他人说的那样),然后您将可以全局访问此信息,但我认为这不是一个好的设计,因为您的活动将与此应用程序实现相关联(您将无法使用此在不同的应用程序中的活动)。

我建议您实施一项服务,并在所有活动中使用此服务。

查看下一篇文章,创建一个对所有活动都有效的后台服务: https//developer.android.com/training/run-background-service/create-service.html

实现此目的的最佳方法是在Prefrences中保存数据并在需要时进行检索。 为简化此操作,您可以直接在对象中存储Object,并在需要时获取该对象。

要保存对象,您需要将GSON库添加到libs文件夹中,然后您可以将任何对象转换为字符串并存储在您想要的任何位置。

对象 - >>字符串>>> Gson gson = new Gson(); String json = gson.toJson(Object);

让对象回来

String - >> Object >>> Gson gson = new Gson(); Object obj = gson.fromJson(json string);

上面的方法将在持久存储中返回,并且您不会一直占用内存。 系统可以根据内存要求释放静态变量,因此不推荐使用。

Application方式是最好的,但是如果你想在这里查看是常用方法的正式列表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM