ПрогрессДиалог в onNewIntent
Я использую onNewIntent при сканировании меток NFC. Я хочу показать ProgressDialog, пока тег сканируется. Я пытался использовать поток, но это сломало мое приложение. Есть ли способ, как я могу показать progressDialog при запуске onNewIntent?
public void onNewIntent(Intent intent) {
setIntent(intent);
Thread scanning = new Thread(new Runnable() {
public void run() {
ScanDialog = ProgressDialog.show(BorrowActivity.this,
"Scanning...", "scanning");
}
});
scanning.start();
.
. //next code doing something
.
}
2 ответа
Решение
Наконец я исправил это с помощью asyncTask.
public void onNewIntent(Intent intent) {
setIntent(intent);
ScanDialog = ProgressDialog.show(BorrowActivity.this,
"Scanning...", "Scanning");
try {
new DoBackgroundTask().execute();
} catch (Exception e) {
//error catch here
}
ScanDialog.dismiss();
И AsyncTask:
private class DoBackgroundTask extends AsyncTask<Integer, String, Integer> {
protected Integer doInBackground(Integer... status) {
//do something
}
protected void onProgressUpdate(String... message) {
}
protected void onPostExecute(Integer status) {
}
}
Вы не можете обновить или использовать пользовательский интерфейс в другом потоке:
решение:
Вызовите главный поток и обновите интерфейс внутри
Thread scanning = new Thread(new Runnable() {
public void run() {
runOnUiThread(new Runnable()
{
public void run()
{
ScanDialog = ProgressDialog.show(BorrowActivity.this,
"Scanning...", "scanning");
}
});
}
});