该问题旨在向社区询问我为我的应用程序采用的方法是否正确或可能会有一些副作用:
我创建了:
-一项称为MasterAcitity的活动是从我应用程序中的每个活动扩展而来的。清单中的application标签声明如下
<application
android:name="my.package.name.MyApplication"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:theme="@style/ApplicationStyle" >
名为MyApplication的类,它扩展了android.App.Application,该类具有以下代码
private static Context _context;
public static Context getContext() {
return _context;
}
public static void setContext(Context context) {
_context = context;
}
在清单中,应用程序标签声明如下
<application
android:name="my.package.name.MyApplication"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:theme="@style/ApplicationStyle" >
MasterActivity在OnResume和OnCreate方法中执行此代码
MyApplication.setContext(this);
该应用程序的每个活动都会扩展MasterActivity。
应用程序中有一个名为DialogHelper的类,该类具有静态方法
public static void showDialog(String message)
使用
android.app.AlertDialog.Builder
创建和显示一个对话框作为上下文MyApplication.getContext()
所以从我应用程序的任何地方,我都可以使用
DialogHelper.showDialog("my message");
这种方法行得通吗?还是我需要注意一些事情?
我的怀疑是在静态背景下...
谢谢
最佳答案
这种方法行得通吗?
使用Application
进行UI工作具有引起问题的历史。在给定的一组情况下(例如,Activity
上的Context
,getThemedContext()
上的ActionBar
)使用getContext()
或专用的Presentation
。