BroadCastReceiver中的特殊之处

项目中使用了极光推送,在收到信息的Receiver里操作网络及依据其返回的内容选择跳转到不同的Activity。但是由于网络情况不佳,如果收不到网络返回的信息,则会出现点击了推送
到的消息后无反应或者经过很长时间后才跳转的信息界面的情况。

    为了解决这个,本来想在Receiver中添加一个自定义的进度条(如图中所示的)。

            LoadingDialog dd=new LoadingDialog(context);
        dd.show();

然而在Receiver中显示此进度条的结果却是报错。。。
04-25 15:37:48.484: E/AndroidRuntime(10411): java.lang.RuntimeException: Unable to start receiver org.lmw.todo.notify.NotifyReceiver: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application

为了解决这个问题,只好求助于度娘,有人说是上下文的问题。我一想,也有道理。毕竟Receiver虽然也有上下文,但毕竟其本身并不存在视图对象。为了解决这个问题。只好将问题拆分。将一步完成的任务拆解成两步。于是新建了一个Activity。将需要网络连接传递的参数传递到Activity中。

并在此Activity中显示进度条。然后根据网络中返回的内容在跳转到相应的界面。而如果网络连接有问题的话,就dismiss掉此内容。弹出一个吐司提示用户。































posted @ 2014-04-26 15:34  linwoain  阅读(200)  评论(0编辑  收藏  举报