В моем приложении у меня есть класс sercice, что у него есть этот метод, чтобы показать диалог прогресса, когда сделать что-то:Android: Невозможно создать обработчик внутри потока, который не называется Looper.prepare()
private void openprogresdialog() {
new AsyncTask<Integer, Integer, Boolean>()
{
ProgressDialog progressDialog;
@Override
protected void onPreExecute()
{
progressDialog = ProgressDialog.show(thisActivity, "Dialog","Loading...");
}
@Override
protected Boolean doInBackground(Integer... params)
{
if (params == null)
{
return false;
}
try
{
Thread.sleep(params[0]);
}
catch (Exception e)
{
Log.e("tag", e.getMessage());
return false;
}
return true;
}
@Override
protected void onPostExecute(Boolean result)
{
progressDialog.dismiss();
AlertDialog.Builder b = new AlertDialog.Builder(thisActivity);
b.setTitle(android.R.string.dialog_alert_title);
if (result)
{
b.setMessage("Download succeeded");
}
else
{
b.setMessage("Download failed");
}
b.setPositiveButton(getString(android.R.string.ok),
new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dlg, int arg1)
{
dlg.dismiss();
}
});
b.create().show();
}
}.execute(2000);
new Thread()
{
@Override
public void run()
{
DialogInterface progressDialog = null;
progressDialog.dismiss();
}
}.start();
}
I хочу, чтобы в то время как приложение сделать это диалог прогресса работа покажет, но когда я запускаю приложение я получаю эту ошибку:
Невозможно создать обработчик внутри потока, который не под названием Looper.prepare()
Как я могу это исправить?
EDIT:
public class MyService extends Service {
private static final String TAG = "MyService";
Thread readthread;
final MyService thisActivity = this;
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
final ParentActivityData data = intent.getParcelableExtra("DATA");
readthread = new Thread(new Runnable() {
public void run() {
// SOME CODE TO EXECUTE //
}
openprogresdialog();
}
});
readthread.start();
Log.d(TAG, "onCreate");
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onCreate() {
}
@Override
public void onDestroy() {
}
}
'progressDialog.dismiss();' this in thread.удалить сам поток – Raghunandan