2014-09-22 79 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