我有一个由配置 XML 驱动的应用程序:各种 应用程序属性在应用程序启动时通过解析 XML 和 初始化某个类的静态变量。从这里读取的数据 XML 驱动应用程序的不同 Activity 。目前,我有 从中调用“解析和属性初始化” 我的主要 Activity 的 onCreate()。
关于这个案例/方法,我有几个问题:
我应该从应用程序中调用应用程序初始化方法吗? 反对或目前的做法是否正确?有什么优势/ 如果我选择从 应用对象?
我们真的需要静态类来存储应用程序属性吗?或者我们可以将所有属性作为应用程序对象中的静态 Collection 变量吗?
在应用程序加载时解析 XML(~200 个节点)可能需要一些时间(不是 确定多长时间);我怎样才能避免可怕的 ANR?我正在使用 拉解析器。
请帮我找到这些问题的答案。
谢谢。
最佳答案
这取决于您要初始化的内容。应用程序的
onCreate()
应该在你做一些需要在你的应用程序的任何部分正常工作之前完成并且只需要完成一次的事情时使用,而 Activity/Service/etc 的onCreate()
应该用于该组件单独需要且需要多次完成的事情。我对将所有初始化都放入一个组件的主要担心是,这会使以后扩展您的应用程序变得更加困难。假设您想让应用程序中的某些 Activity 可以被外部 Intent 访问 - 现在您必须将初始化代码移至 Application,或者必须在非启动器 Activity 中复制初始化代码。
听起来你应该看看 SharedPreferences , 特别是 PreferenceManager.getDefaultSharedPreferences() .首选项将在 session 之间存储,它使您可以从任何上下文轻松访问简单属性。
线程。我找到 AsyncTask成为完成此任务的最简单方法;有 a good write-up on it at Google .或者,您可以在后台启动服务来执行此操作,同时让前台 Activity 通知用户您正在启动应用程序。
关于安卓应用程序初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1938930/