使得在一个活动中获得的数据可用于所有活动
问题描述:
我将从解析XML获得的字符串存储在ArrayList中。有许多这样的数组列表。如何使这些ArrayLists对应用程序中的所有活动可用,以便我不需要使用意图将数组传递给活动。使得在一个活动中获得的数据可用于所有活动
答
拥有'许多'列表并使它们变为静态并不是非常有效。您可以使用我认为更高效的内容提供者。
答
您最好定义一个在活动之间传递数据的处理程序。
使用的一个很好的解释是这个*的发布
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();
答
我不认为一个静态字段是你想要的这里。你没有提到这个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);
}
}