BroadcastReceiver中不适合做异步操作,BroadcastReceiver结束后被被系统kill。
这里的对话框show之后,onReceive就结束了。但实际上你操作dialog,它就被杀死了。

解决方案 »

  1.   

    你还未操作dialog(点击确定或取消之类的操作),它就又被销毁了……
      

  2.   

    应该是在这里崩溃,dialog依赖的是activity,不能用context
     AlertDialog.Builder builder = new AlertDialog.Builder(Activity);
      

  3.   

    BroadcastReceiver中只能够处理足够快的事件,运行时间如果超过N秒(具体多长时间忘记了),就会被强制杀死
      

  4.   

    1.builder直接show,这个不对
    2.要先获得当前的activity
    AlertDialog.Builder builder = new AlertDialog.Builder(context);
    builder.setTitle("Warning");
    builder.setMessage("Charge complete");
    builder.setPositiveButton("OK", null);
    builder.setNegativeButton("Cancel", null);
    AlertDialog dia = builder.create();
    dia.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
    dia.show();