【发布时间】:2011-03-14 05:34:54
【问题描述】:
我将从解析 XML 获得的字符串存储在 ArrayList 中。有很多这样的arrayLists。如何使这些 ArrayLists 可用于应用程序中的所有活动,这样我就不需要使用意图将数组传递给活动。
【问题讨论】:
标签: android
我将从解析 XML 获得的字符串存储在 ArrayList 中。有很多这样的arrayLists。如何使这些 ArrayLists 可用于应用程序中的所有活动,这样我就不需要使用意图将数组传递给活动。
【问题讨论】:
标签: android
我不认为静态字段是您想要的。您没有提到此 xml 来自何处,但我假设您的意思是在您的应用程序中包含的 xml 文件中指定的字符串数组。在这种情况下,您需要获取 Resources 对象的句柄,为此您需要一个 Context。
Application 对象始终存在并且可以从您的所有活动中访问。我会在那里创建和存储这些全局 ArrayList。因为听起来你有一堆,所以可能有一个 ArrayList 的 Map 和你的 Application 类中的一个函数,它获取你想要的 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);
}
}
【讨论】:
扩展应用程序并让它保存您的数据。然后按照你的意图去做
((MyApplication)getApplication()).getData();
【讨论】:
避免使用static 变量。它快速且无痛,但很快就会变得一团糟。
早点查看question
【讨论】:
Android Application Framework FAQ 中有很多关于执行此操作的方法的文章。
【讨论】:
拥有“许多”列表并将它们设为静态并不是很有效。您可以使用我认为更高效的内容提供程序。
【讨论】:
您最好定义一个处理程序来在活动之间传递数据。
这个stackoverflow帖子中有一个很好的使用说明
How to access original activity's views from spawned background service
android dev 写在这里
http://developer.android.com/reference/android/os/Handler.html
您将在主线程上定义一个处理程序,其中包含您想要提供的 ArrayList。
【讨论】: