【发布时间】:2016-06-16 08:38:21
【问题描述】:
以下哪种方式更适合获取Application的实例
-
初始化 Application.onCreate() 中的静态字段并提供对其的静态访问
public class MyApplication extends Application { private static MyApplication sInstance; @Override public void onCreate() { super.onCreate(); sInstance = this; } public static MyApplication getInstance() { return MyApplication.sInstance; } } public class MyBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { MyApplication application = MyApplication.getInstance(); } } -
创建以 Context 作为参数的静态方法并将该 Context 转换为 MyApplication
public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); } public static MyApplication getInstance(Context context) { return ((MyApplication) context.getApplicationContext()); } } public class MyBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { MyApplication application = MyApplication.getInstance(context); } }
【问题讨论】:
-
我不明白这里的一件事。如果您真的想要
BroadcastReceiver中的Context,那么onReceive(Context context,...)已经作为第一个参数提供。使用那个。 -
我从未见过方式 2,但这对我来说没有意义,因为如果你有一个上下文,你可以做 getApplicationContext
标签: android applicationcontext