Я относительно новый в мире 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 для этого. Я чувствую, что может быть лучшее решение, не имея дело с этими потоками. Я прав?
Благодаря
Спасибо Peter Я думал, что это не решит мою проблему, поэтому я не попытался на самом деле. Теперь, если я пытаюсь использовать AsyncTask. Я столкнулся с другой проблемой \t protected void onPreExecute() { \t \t super.onPreExecute(); \t \t \t \t prefs = PreferenceManager.getDefaultSharedPreferences (getBaseContext()); \t} Как получить контекст? Спасибо – Jonas
Вы должны передать его в конструктор. При расширении AsyncTask создайте конструктор, который принимает параметр «Context' в качестве параметра. –
Хорошо, если я знал, что это так просто ... Спасибо – Jonas