在asynctask中实现广播接收器

时间:2014-09-22 06:32:07

标签: android android-asynctask broadcastreceiver

我对Android很新。我正在研究这个项目,它在列表视图中显示应用程序列表及其详细信息。我从服务器获取应用程序列表作为JsonArray。我使用服务来检索JsonArray和LocalBroadcastManager以将其广播到MainActivity。一切都适合我。但是需要几秒钟才能将数据输入我的主要功能。这导致我的应用程序只显示一个空白屏幕。因此我想添加一个Progress Dialogbox来显示,直到我从服务中获取数据。我找到了一个使用Asynctask显示进度对话框的示例(链接:How to use progress dialog in AsyncTask in android)。但我的问题是,我不知道如何在Asyntask DoInBackground方法中实现我的Broascast接收器方法。我搜索了一些答案但找不到任何答案。

如果有人能帮我解决这个问题,我将非常感激,或者建议我采用另一种方法来做到这一点。在此先感谢

我的代码:

这是服务类中的方法,我用来将JSONArray广播到mainActivity

private void broadcastMessage(String message, String extraType) {
    // TODO Auto-generated method stub
    Intent intent = new Intent("my-event");
    if (message != null){
        intent.putExtra(extraType, message);
    }
    LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
}
这里的

消息包含我的JSONArray作为字符串。

以下是我在mainActivity中使用的代码来获取数据:

LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver,
              new IntentFilter("my-event"));

其中mMessagerReceiver是BroadcastReceiver的对象。

private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub
        results = intent.getStringExtra("JSONArray");
        Log.e("receiver", "got your message");
    }
};

这段代码对我很好..但是现在我希望broascastReceiver在我的asynctask中。有可能吗?

1 个答案:

答案 0 :(得分:0)

最好使用Google Volley进行网络服务通话,以便您可以从您的活动中调用api并在那里获得结果。也很容易处理Dialog Json到gson等的进展。