помочь с классом обработчика для обновления пользовательского интерфейса - Android - PullRequest
0 голосов
/ 30 октября 2010

Я надеюсь, что вы можете мне помочь:

Мне нужно обновить пользовательский интерфейс для приложения Android, и я пытаюсь использовать класс Handler, чтобы сделать это, используя http://developer.android.com/resources/articles/timed-ui-updates.html иРесурсы разработчика Android "Общая задача" для использования обработчиков в качестве руководства.

По сути, мне нужно что-то среднее между этими двумя - обновление по времени пользовательского интерфейса, но без кнопки.Итак, вот соответствующий код, над которым я работаю.Мы очень ценим любую помощь.

public class Activity1 extends Activity {

[… variable]

final Handler mHandler = new Handler ();

final Runnable mUpdateResults = new Runnable() {
    public void run() {

        UpdateDisplay();
        mHandler.postDelayed(mUpdateResults, 200);
    }
};


/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

[…]

startLongRunningOperation ();

}


protected void startLongRunningOperation() {

    Thread t = new Thread() {
        public void run() {
             if (mStartTime == 0L) {
                 mStartTime = System.currentTimeMillis();
                 mHandler.postDelayed(mUpdateResults, 200);}
            mHandler.post(mUpdateResults);
        }
    };
    t.start();
}

Еще раз спасибо!

1 Ответ

3 голосов
/ 30 октября 2010

В Android лучше всего использовать AsyncTask для выполнения задач в фоновом режиме при постепенном обновлении пользовательского интерфейса с результатами этой задачи.

Отредактировано:

После проверки кода, я думаю, ваш обработчик работает правильно.Вероятно, проблема в UpdateDisplay().Поскольку вы обновляете отображение из фонового потока, убедитесь, что вы вызвали [view.postInvalidate()][2] после того, как закончили обновлять свой просмотр.

...