【问题标题】:How should I store my data if it has to be accessed from different contexts?如果必须从不同的上下文访问数据,我应该如何存储数据?
【发布时间】:2017-02-01 14:21:36
【问题描述】:

我通过ContentProvider 在我的应用程序的主要活动中查询一堆数据,这些数据存储在ArrayList 中。我必须根据用户输入将 某些 对象传递给其他活动或服务,因此在新的上下文中重新收集我需要的所有数据确实是环境和繁重的工作。我不想那样做。我应该如何在应用组件之间存储和转发这些对象?

【问题讨论】:

  • 假设您的数据很小(正如您选择的 ArrayList 所显示的那样),我宁愿将其打包并放入 Intents 和 Broadcasts 中。

标签: android android-context


【解决方案1】:

如果数据很小,请使用意图机制...如果您有大量数据只需要应用程序中的一个会话,请使用单例... 如果您需要数据持久化,请使用 sqlite 数据库...您还可以检查某种 ORM 以避免编写 sql 代码...

【讨论】:

    【解决方案2】:

    您可以创建静态类来存储数据

    例如

    public class temp_data {
       public static ArrayList arraylist;
       public static String str="temp string is it";
    }
    

    调用 Mainactivity.class

    public class MainActivity extends AppCompatActivity{ 
    
     @Override
     protected void onCreate(Bundle savedInstanceState) {
    
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toast.makeText(MainActivity.this, ""+temp_data.str,Toast.LENGTH_SHORT).show();         
    }
    

    它会烤“临时字符串是它”

    注意:- - 如果应用关闭,则此数据可以存储到应用不关闭,然后数据可能会丢失。

    • 并且数据可以访问应用程序活动,服务或接收者只需调用

    类名.变量名

    【讨论】:

    • 请注意,当设备内存不足时,此方法可能会导致 Nullpointer 异常,因为垃圾收集器可能会删除您的静态类及其中的数据,因为它可能没有意识到仍然需要数据。
    • 那么你可以使用数据库或共享首选项否则不能工作,我建议使用数据库。它可以轻松存储mysql或sql等数据,并轻松使用查询获取数据。试试developer.android.com/training/basics/data-storage/…
    猜你喜欢
    • 2016-03-03
    • 2014-03-30
    • 2016-05-19
    • 2021-02-16
    • 2011-02-09
    • 1970-01-01
    • 2018-02-03
    • 1970-01-01
    • 2010-11-10
    相关资源
    最近更新 更多