【发布时间】:2013-05-04 17:33:58
【问题描述】:
这个问题旨在向社区询问我为我的应用采取的方法是否正确或可能有一些副作用:
我创建了: - 一个名为 MasterAcitity 的 Activity,从我的应用程序中的每个 Activity 扩展而来。 manifest中的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");
这种方法行得通吗?或者我需要注意什么?
我的疑问在于静态上下文...
谢谢
【问题讨论】:
-
您可以使用 getaplicationcontext()。你试过吗?
-
您必须在需要时传递上下文。这可能会导致内存泄漏。
-
@itsrajesh4uguys,我有一些带有静态方法的类应该显示对话框 Anis,你能解释一下为什么它会导致内存泄漏吗?
-
@SimonVeloper :“我有一些带有静态方法的类应该显示对话框”-出于兴趣,这些“类”扩展了什么?
-
在访问这些类时只需将上下文作为参数传递