不能使用ApplicationContext
有些情况不能使用ApplicationContext
1.创建展示dialog
Dialog dialog = new Dialog(getApplicationContext());
dialog.show();
报错:
android.view.WindowManager$BadTokenException:
Unable to add window -- token null is not for an application
2.启动activity
getApplicationContext().startActivity(new Intent(this, NewActivity.class));
报错:
android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
要这样:
Intent intent = new Intent(this, NewActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getApplicationContext().startActivity(intent);
但是不推荐这样做
3.使用LayoutInflater或者调用inflate()
View view = View.inflate(getApplicationContext(), R.layout.view, null);
或者
View view = LayoutInflater.from(getApplicationContext()).inflate(R.layout.view, null);
这两种使用applicationContext是合法的
但是会使用系统默认的主题样式,如果自定义了样式有可能失效