我创建了一个活动来创建用户个人资料并存储其信息,如姓名,身份证,个人资料照片等。
此信息是唯一的,应该在应用程序的所有活动中使用。
我想知道哪种方法可以创建一个存储所有信息并在所有活动中使用它的公共对象。
我已阅读有关bundle和JSON的内容,但无法理解如何使用它。
请帮我看看我应该选择哪个选项。我已经做了很多阅读,但现在还不确定。请帮我解决标准事情和更好的事情。
答案 0 :(得分:4)
您可以使用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 " />
希望这有帮助。
答案 1 :(得分:1)
您可以创建自定义应用程序(就像其他人说的那样),然后您可以全局访问此信息,但我认为这不是一个好的设计,因为您的活动将与此应用程序实现相关联(您将无法使用在不同的App中使用此活动。)
我建议您在所有活动中实施服务并使用此服务。
检查下一篇文章,创建一个对所有活动都有效的后台服务: https://developer.android.com/training/run-background-service/create-service.html
答案 2 :(得分:0)
实现此目的的最佳方法是在Prefrences中保存数据并在需要时进行检索。为了简化这一点,您可以直接在首选项中存储一个Object,并在需要时获取该对象。
要保存对象,您需要将GSON库添加到libs文件夹中,然后您可以将任何对象转换为字符串并存储在您想要的任何位置。
对象 - &gt;&gt;字符串&gt;&gt;&gt; Gson gson = new Gson(); String json = gson.toJson(对象);
获取对象
字符串 - &gt;&gt;对象&gt;&gt;&gt; Gson gson = new Gson();对象obj = gson.fromJson(json string);
上述方法将在持久存储中返回,并且您不会一直占用内存。 系统可以根据内存要求释放静态变量,因此不推荐使用。
答案 3 :(得分:-1)
Application
方式是最佳方式,但如果您想查看here是常用方法的正式列表。