2010-11-05 2 views
0

Я относительно новый в мире Android, а модель пользовательского интерфейса/темы по-прежнему запутывает.Это лучший способ показать контент?

Вот что я пытаюсь сделать:

Загрузка данных из Интернета Обрабатывать их Покажите им Покажите AlertDialog если есть проблема

В настоящее время я делаю так, но Я не уверен, что использование большого количества потоков - это лучший способ сделать это.

Внутри OnCreate()

final ProgressDialog pd = ProgressDialog.show(this, "", loadingText, true); 
    final AlertDialog.Builder b = new AlertDialog.Builder(this); 

    new Thread(new Runnable() { 

    @Override 
    public void run() { 
    try { 
    loadResorts(); 
    } catch (ResortsRetrievalException e) { 
    runOnUiThread(new Runnable() { 
     @Override 
     public void run() { 
     b.setMessage(R.string.resorts_retrieval_error) 
     .show(); 
     } 
    }); 
    } 
    pd.dismiss(); 
    } 
    }).start(); 

И мой метод loadResorts заканчивается

final BaseAdapter a = new ResortAdapter(this, R.layout.resort_item, resorts); 

    runOnUiThread(new Runnable() { 
    @Override 
    public void run() { 
    resortsList.setAdapter(a); 
    } 
    }); 

У меня есть одна тема и два вызова runOnUiThread для этого. Я чувствую, что может быть лучшее решение, не имея дело с этими потоками. Я прав?

Благодаря

ответ

1

Использование AsyncTask - он был создан для такого рода сценариев: выполняется фоновое задание или (длинный) процесс, в то же время обновления пользовательского интерфейса в правильном пути (по Гринвичу).

+0

Спасибо Peter Я думал, что это не решит мою проблему, поэтому я не попытался на самом деле. Теперь, если я пытаюсь использовать AsyncTask. Я столкнулся с другой проблемой \t protected void onPreExecute() { \t \t super.onPreExecute(); \t \t \t \t prefs = PreferenceManager.getDefaultSharedPreferences (getBaseContext()); \t} Как получить контекст? Спасибо – Jonas

+0

Вы должны передать его в конструктор. При расширении AsyncTask создайте конструктор, который принимает параметр «Context' в качестве параметра. –

+0

Хорошо, если я знал, что это так просто ... Спасибо – Jonas

Смежные вопросы