У меня расширенный класс диалога, который я хочу показать в течение 3 секунд, а затем исчезнуть.Это прекрасно работает в первые два раза, как это называется, но затем он вылетает мое приложение после этого.По общему признанию, я не лучший с потоками, и я думаю, что это, где моя проблема может быть.Как вы можете видеть из приведенного ниже кода (закомментированный раздел), я пытался использовать событие отмены для уничтожения порожденного потока, но это приводит к его аварийному завершению при первом запуске.Я также попытался сделать все это в потоке пользовательского интерфейса родительского класса, который дает тот же результат, что и этот (происходит сбой после 3 раз при отображении диалогового окна).
import java.util.Timer;
import java.util.TimerTask;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Handler;
public class HandResults extends Dialog implements DialogInterface {
HandResults hr;
Timer myTimer;
Handler hand = new Handler();
Thread t;
public HandResults(Context context) {
super(context);
setContentView(R.layout.handresults);
hr = this;
/*
this.setOnCancelListener(new OnCancelListener(){
public void onCancel(DialogInterface dialog) {
t.destroy();
}
});
*/
}
public void showHands(){
this.show();
myTimer = null;
myTimer = new Timer();
myTimer.schedule(new TimerTask() {
@Override
public void run() {
TimerMethod();
}
}, 3000);
}
private void TimerMethod()
{
t = new Thread(){
public void run(){
hand.post(Timer_Tick);
}
};
t.start();
}
private Runnable Timer_Tick = new Runnable() {
public void run() {
hr.cancel();
}
};
}