使得在一个活动中获得的数据可用于所有活动

问题描述:

我将从解析XML获得的字符串存储在ArrayList中。有许多这样的数组列表。如何使这些ArrayLists对应用程序中的所有活动可用,以便我不需要使用意图将数组传递给活动。使得在一个活动中获得的数据可用于所有活动

Android Application Framework FAQ中有很多方法可以做到这一点。

拥有'许多'列表并使它们变为静态并不是非常有效。您可以使用我认为更高效的内容提供者。

您最好定义一个在活动之间传递数据的处理程序。

使用的一个很好的解释是这个*的发布

How to access original activity's views from spawned background service

和Android开发人员编写了这里

http://developer.android.com/reference/android/os/Handler.html

您将定义您与主线程的处理程序ArrayLists您想使可用。

扩展应用程序并让它保存您的数据。然后在你的意图你

((MyApplication)getApplication()).getData(); 

避免使static变量。它快速而无痛,但真正快速变得凌乱。

入住这早些时候question

我不认为一个静态字段是你想要的这里。你没有提到这个xml来自哪里,但我假设你的意思是一个在你的应用程序中包含的xml文件中指定的字符串数组。在这种情况下,您需要获取Resources对象的句柄,为此您需要一个Context。

应用程序对象始终围绕并可从您的所有活动访问。我会在这里创建并存储这些全局ArrayLists。因为它听起来像你有一堆,所以你可以在你的Application类中有一个MapLayer和一个函数,它取得你想要的ArrayList的名字,并从Map中返回适当的ArrayList。

public class MyApp extends Application { 

private Map<String, ArrayList<String>> mLists=new HashMap<String, ArrayList<String>>(); 


public void addList(String key, ArrayList<String> list) { 
     mLists.put(key,list); 

} 

public ArrayList<String> getList(String key) { 

    return mLists.get(key); 

} 

}