2014-09-22 68 views
0

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

如果有人能够帮助我解决这个问题,我会非常感激,或者建议我采用另一种方法来做到这一点。由于提前

我的代码:

这是在服务类中的方法是,我使用的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是广播接收器的对象。

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

也发布你的代码。 – John 2014-09-22 06:34:56

回答

0

为您的web服务调用使用google Volly更好,以便您可以从您的活动调用api并在那里获取结果。也容易处理Dialog Json的进度等。

+0

检查:http://blog.aimanbaharum.com/2014/02/android-development-5-using-volley-and.html http://www.michenux.net/android-volley-and-gson-tutorial -797.html https://gist.github.com/ficusk/5474673 http://www.piwai.info/android-string-placeholders/ – abi 2014-09-23 04:23:44

+0

谢谢您的回复。但把你的建议和我已经做过的事情结合起来有点复杂。 – nickY 2014-10-04 02:35:55