Android 在异步任务中实现广播接收器
我对安卓相当陌生。我正在从事这个项目,它在列表视图中显示应用程序列表及其详细信息。我从服务器以JsonArray的形式获取应用程序列表。我使用服务检索JsonArray,使用LocalBroadcastManager将其广播到MainActivity。对我来说一切都很好。但是把数据输入我的Mainacity需要几秒钟的时间。这导致我的应用程序只显示一个空白屏幕。因此,我想添加一个进度对话框来显示,直到我从服务中获取数据为止。我找到了一个使用Asynctask(链接:)显示进度对话框的示例。但我的问题是,我不知道如何在Asyntask DoInBackground方法中实现Broascast接收器方法。我搜索了一些答案,但没有找到 如果有人能帮我解决这个问题,或者给我一个替代方法,我会非常感激。提前谢谢 我的代码: 这是服务类中的方法,我使用它将JSONArray广播给mainActivityAndroid 在异步任务中实现广播接收器,android,android-asynctask,broadcastreceiver,Android,Android Asynctask,Broadcastreceiver,我对安卓相当陌生。我正在从事这个项目,它在列表视图中显示应用程序列表及其详细信息。我从服务器以JsonArray的形式获取应用程序列表。我使用服务检索JsonArray,使用LocalBroadcastManager将其广播到MainActivity。对我来说一切都很好。但是把数据输入我的Mainacity需要几秒钟的时间。这导致我的应用程序只显示一个空白屏幕。因此,我想添加一个进度对话框来显示,直到我从服务中获取数据为止。我找到了一个使用Asynctask(链接:)显示进度对话框的示例。但我的
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等。同时发布您的代码。检查:感谢您的回复。但是把你的建议和我已经做的结合起来有点复杂。