2014-09-22 3 views
0

Я довольно новичок в Android. Я работаю над этим проектом, который отображает список приложений и его детали в списке. Я получаю список приложений как JsonArray с сервера. Я использую службу для извлечения JsonArray и LocalBroadcastManager для ее трансляции в MainActivity. Все работает отлично для меня. Но для получения данных в моей mainacitvity требуется несколько секунд. Это заставляет мое приложение отображать только пустой экран. Поэтому я решил добавить диалоговое окно «Прогресс» для отображения, пока я не получу данные из службы. Я нашел пример для отображения диалогового окна «Выполнение» с использованием Asynctask (ссылка: How to use progress dialog in AsyncTask in android). Но моя проблема в том, что я не знаю, как реализовать метод приемника Broascast внутри метода Asyntask DoInBackground. Я искал ответы, но не смог найти их.Реализация широковещательных приемников в 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 является объектом 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

также разместите свой код. – John

ответ

0

Лучше использовать google Volly для вызова веб-службы, чтобы вы могли вызвать api из своей активности и получить там результат. также легко обрабатывается прогресс Dialog Json to gson и т. д.

+0

check: 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

+0

Благодарим вас за ответ. Но было немного сложно интегрировать ваше предложение с тем, что я уже сделал. – nickY