关于Android上下文

时间:2011-11-01 02:52:35

标签: android android-context

我在这里粘贴了一些代码:

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()".的参数。 那两个参数之间的差异是什么?

1 个答案:

答案 0 :(得分:3)

正如您所注意到的,构建器的constructorContext个对象作为参数。

Activity和Application对象都是Context的子类,因此要么是创建Builder的有效参数。

  

对象 - >上下文 - > ContextWrapper - >应用
  对象 - >上下文 - > ContextWrapper - > ContextThemeWrapper - >活性

应用程序和活动之间有什么区别?我认为最明显的差异之一是他们的生命周期:

  • 只要该特定的UI正在运行,活动就会存在,并且会在各种情况下被破坏和重新创建,例如:关于方向更改,或者当没有查看活动时,Android操作系统需要通过销毁未被查看的活动来释放一些内存。

  • 只要应用程序本身正在运行,应用程序就会存在。

至于你的具体问题,崩溃的堆栈跟踪是什么?这个question表示getApplicationContext()可能为空,因为应用程序在创建活动时仍在启动(答案显示问题已在Android OS 1.6中修复)。