Android 在异步任务中实现广播接收器

Android 在异步任务中实现广播接收器,android,android-asynctask,broadcastreceiver,Android,Android Asynctask,Broadcastreceiver,我对安卓相当陌生。我正在从事这个项目,它在列表视图中显示应用程序列表及其详细信息。我从服务器以JsonArray的形式获取应用程序列表。我使用服务检索JsonArray,使用LocalBroadcastManager将其广播到MainActivity。对我来说一切都很好。但是把数据输入我的Mainacity需要几秒钟的时间。这导致我的应用程序只显示一个空白屏幕。因此,我想添加一个进度对话框来显示,直到我从服务中获取数据为止。我找到了一个使用Asynctask(链接:)显示进度对话框的示例。但我的

我对安卓相当陌生。我正在从事这个项目,它在列表视图中显示应用程序列表及其详细信息。我从服务器以JsonArray的形式获取应用程序列表。我使用服务检索JsonArray,使用LocalBroadcastManager将其广播到MainActivity。对我来说一切都很好。但是把数据输入我的Mainacity需要几秒钟的时间。这导致我的应用程序只显示一个空白屏幕。因此,我想添加一个进度对话框来显示,直到我从服务中获取数据为止。我找到了一个使用Asynctask(链接:)显示进度对话框的示例。但我的问题是,我不知道如何在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"));
其中,mMessageReceiver是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在我的任务范围内。有可能吗?

最好在web服务调用中使用google Volly,这样您就可以从活动中调用api并在那里获得结果。也很容易处理进度对话框Json到gson等。

同时发布您的代码。检查:感谢您的回复。但是把你的建议和我已经做的结合起来有点复杂。