有没有理由不使用Application类来跨活动共享变量?
例如DB的句柄或单个HttpClient。
答案 0 :(得分:5)
根据官方文档“您可以使用它来维护全局应用程序状态”。 IMO你不想在全球范围内抓住太多重物。当然,“太多”太模糊了:)还有其他共享(持久)数据的方式:首选项,数据库,文件。您可能想要检查这些中的任何一个是否更适合您的问题。
使用Application对象时需要了解的另一件事是它的生命周期。不幸的是,对此的讨论可能非常主观,但幸运的是,例如讨论has already been done
祝你好运!答案 1 :(得分:3)
Application
对象用于维护Application state 而不是资源。就个人而言,我会在每个需要它们的Activity中启动数据库连接或HTTP客户端,而不是在Application
对象中全局启动。
我不认为创建此类对象会产生巨大的开销,这意味着当Activity停止时,可以释放这些资源。如果在Application对象中创建它们,它们将始终使用up内存进行实例化,即使当前Activity不需要它们。