静态方法与类扩展android.app.Application?

wuf*_*foo 4 methods static android parameter-passing

我有一个类,它在Android tabHost应用程序中扩展了Application.在App类中,我一直在放置方法和变量,否则我需要在每个类中重新创建.一种方法从DB读取并将结果存储在ArrayList(例如,名字,姓氏)中.我没有重新读取这个数据库并为每个需要信息的选项卡视图重新创建代码,而是将方法和ArrayList放在扩展Application(myAppClass)的类中.这样,通过mAC = (myAppClass) getApplicationContext()在onCreate()中的任何选项卡视图中设置,我可以引用myAppClass中的所有get ..()和set ..()方法.

我最初的计划是使用带有静态方法和变量的共享类,但我读了很多"不要那样做"的线程,因此决定使用Application路由.现在,我遇到了一种情况,我正在尝试在项目库中使用myAppClass,但是遇到错误android.app.Application cannot be cast to...如果我将myAppClass更改回静态方法/变量(并且不扩展应用程序)的东西工作,但这应该是是一个很大的禁忌.还有另一种方法吗?不确定Android是否通过引用传递了所有内容,但是我最好通过在方法/类之间来回传递巨大的(数千个对象/成员)ArrayLists来重新实现整个应用程序吗?

Com*_*are 6

我最初的计划是使用带有静态方法和变量的共享类,但我读了很多"不要那样做"的线程,因此决定使用Application路由.

"不要那样做"通常是针对全球范围内的任何内容的建议,因此将涵盖静态数据成员以及自定义Application.两者都可能是内存泄漏的来源.

现在,我遇到了一种情况,我正在尝试在项目库中使用myAppClass,但是获取有关android.app.Application的错误无​​法转换为......

您在托管项目中的清单可能并未声明使用库的Application实现.

这应该是一个很大的禁忌

同样,静态数据成员并不比自定义更差Application,并且在许多情况下更好.

还有另一种方法吗?

不要使用Application静态数据成员.

通过在方法/类之间来回传递巨大的(数千个对象/成员)ArrayLists,我会更好地重新实现整个应用程序吗?

拥有持久数据模型(例如数据库)会更好.使用静态数据成员作为持久数据模型的缓存是可以的,只要您对内存管理非常小心.