我在这里粘贴了一些代码:
public void onCreate(Bundle savedInstanceState) {
Log.e("Main Activity", "OnCreate");
super.onCreate(savedInstanceState);
setContentView(R.layout.main_frame);
//GlowEffect is the custom class's constructor:GlowEffect(context);
new GlowEffect2(getApplictionContext());
AlertDialog.Builder builder = new Builder(this);
...
...
我发现当我将**Builder(this)**
中的参数更改为 Builder(getApplicationContext());
时
该应用程序将崩溃!虽然GlowEffect2
构造函数适用于“this
”或"getApplicationContext()".
的参数。
那两个参数之间的差异是什么?
答案 0 :(得分:3)
正如您所注意到的,构建器的constructor将Context个对象作为参数。
Activity和Application对象都是Context的子类,因此要么是创建Builder的有效参数。
对象 - >上下文 - > ContextWrapper - >应用
对象 - >上下文 - > ContextWrapper - > ContextThemeWrapper - >活性
应用程序和活动之间有什么区别?我认为最明显的差异之一是他们的生命周期:
只要该特定的UI正在运行,活动就会存在,并且会在各种情况下被破坏和重新创建,例如:关于方向更改,或者当没有查看活动时,Android操作系统需要通过销毁未被查看的活动来释放一些内存。
只要应用程序本身正在运行,应用程序就会存在。
至于你的具体问题,崩溃的堆栈跟踪是什么?这个question表示getApplicationContext()
可能为空,因为应用程序在创建活动时仍在启动(答案显示问题已在Android OS 1.6中修复)。