Как правильно реализовать класс Android.os.Handler вместо Timer в приложении Android? - PullRequest
0 голосов
/ 30 апреля 2011

Итак, я хотел внедрить Timer в моей программе Anroid и выяснил, что лучший способ сделать это - использовать класс Handler.

Сначала я решил написать простейшую программу с использованием Handler - текст задается после1 секунда.Я полностью новичок в Android, поэтому я просмотрел некоторые учебники в Интернете, особенно этот http://developer.android.com/resources/articles/timed-ui-updates.html, но все равно мое приложение выдает ошибку ("application mTimer остановлено").

Так что кто-нибудь может указатьгде именно я делаю ошибку?Буду благодарен, вот код:


public class mTimer extends Activity {

    TextView tv;
    Button button1,button2;
    Handler mHandler;

    private Runnable myTask = new Runnable() {
           public void run() {

               tv.setText("text");

           }
        };

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        button1=(Button)findViewById(R.id.button1);
        tv=(TextView)findViewById(R.id.textView1);

 button1.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                mHandler.postDelayed(myTask, 100);
            }
        });


    }
}

1 Ответ

2 голосов
/ 30 апреля 2011

Вы должны инициализировать Handler в вашем методе onCreate хотя бы с кодом, подобным mHandler = new Handler();.

Обратите внимание, что задача myTask будет выполняться в потоке пользовательского интерфейса, поскольку ваш обработчик объявлен там

Документы API для Handler.postDelayed:

Runnable будет запущен в потоке, к которому подключен этот обработчик.

...