【发布时间】:2012-02-23 02:02:57
【问题描述】:
我的问题是我有一些异步任务需要我的自定义应用程序对象来调用一些功能。每次我想创建一个异步任务时,我都必须将应用程序对象或当前上下文传递给它。
我在想如果我将应用程序对象设为静态会怎样。
类 MyApp 扩展应用程序 {
静态 MyApp 应用;
公共 onCreate() { 应用程序=这个; }
}
然后我可以得到这个全局应用程序对象(MyApp.app),而不必传入上下文。
这样好吗?有什么风险吗?
【问题讨论】:
我的问题是我有一些异步任务需要我的自定义应用程序对象来调用一些功能。每次我想创建一个异步任务时,我都必须将应用程序对象或当前上下文传递给它。
我在想如果我将应用程序对象设为静态会怎样。
类 MyApp 扩展应用程序 {
静态 MyApp 应用;
公共 onCreate() { 应用程序=这个; }
}
然后我可以得到这个全局应用程序对象(MyApp.app),而不必传入上下文。
这样好吗?有什么风险吗?
【问题讨论】:
你实际上不需要这样做, 只需创建 Application 的子类并在清单中声明您自己的应用程序。
<Application
android:name="blah.YourApplication">
</Application>
然后要访问它,您只需要一个 Activity 或 Service 实例来 getApplication() 并将其转换为您的“YourApplication”类。
由于您想在 AsyncTask 子类中访问“YourApplication”,因此您应该将启动 AsyncTask 的服务或活动传递给您的“AsyncTask”子类,以便您可以访问内部的“YourApplication”。
【讨论】: