android - 重新创建应用程序实例时,getApplicationContext() 返回 null
问题描述
我正在尝试使用类似这样的应用程序上下文启动一个活动,
这有效
public class MyApplication extends Application {
public static Context mContext = null;
public MyApplication() {
mContext = this;
}
public static void launchActivity() {
Log.i(TAG, "Going to start main activity");
Intent intent = new Intent();
intent.setComponent(new ComponentName(mContext.getPackageName(), MainActivity.class.getName()));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mContext.startActivity(intent);
Log.i(TAG, "Successfully started the activity");
}
}
这行不通
public class MyApplication extends Application {
public MyApplication() {
//Do nothing
}
public void launchActivity() {
Log.i(TAG, "Going to start main activity");
Intent intent = new Intent();
intent.setComponent(new ComponentName(getApplicationContext().getPackageName(), MainActivity.class.getName()));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getApplicationContext().startActivity(intent);
Log.i(TAG, "Successfully started the activity");
}
}
我launchActivity
从我的广播接收器中调用这个方法,看起来类似于这个,
public class MyReceiver extends BroadcastReceiver {
public static final String TAG = "xyz";
@Override
public void onReceive(Context context, Intent intent) {
MyApplication myApplication = new MyApplication();
myApplication.upateUIModeValueViaBroadcast();
}
}
我不明白为什么 getApplicationContext()在应用程序实例是新的时返回null 。
解决方案
推荐阅读
- vue.js - vue.js 反应性依赖类如何可能有许多观察者订阅者
- liferay-7.1 - Liferay 7 粘土管理工具栏
- php - 如何更改 woocommerce 标题的 .cart-title
- javascript - 承诺履行后重定向到javascript中的另一个页面?
- javascript - 如何在 v-for vue js 中创建增量变量
- r - 在 RStudio 中加载 Tidyverse 的问题
- api - 为不同的管道(:api和:browser)呈现不同的错误?
- vue.js - Vue Props 值未在简单测试中通过
- c - 为什么最后一个索引的节点在使用 igraph 生成的随机网络中没有过度代表?
- rest - 如何形成nexus 3的搜索网址