Пользовательский интерфейс висит, как решить в Android с использованием асинхронных классов? - PullRequest
3 голосов
/ 20 июня 2011

Я реализую приложение, связанное с чатом.В этом приложении, выполняющем два метода в асинхронном классе, оба запускают одновременное обновление сообщения и список сообщений. Эти два метода, которые я использую, сначала загружают список, этот вызов метода обновления каждые 10 секунд, оба реализуют отдельный асинхронный класс, на этот раз некоторое зависание экрана.Неполадка, пожалуйста, отправьте несколько предложений, заранее спасибо

этот метод, вызываемый ниже, каждые 10 секунд:

 public class LatestMessage extends AsyncTask 
     {
     handlerreferesh("",0);
    }

    class RefreshHandler extends Handler 
    {
     public void handleMessage(Message msg)
         {
            Shout1.this.updateUI();
         }

        public void sleep(long delayMillis) {
            this.removeMessages(0);
         // if(isUpdateUI  )
       if(!isFinishing())
       {
          sendMessageDelayed(obtainMessage(0), delayMillis);
       }
         }
         };
     private void updateUI(){
     try
     {
      //this below handlerrefresh method implemnting asyncronous class.........
       handlerreferesh("",0);
       mRedrawHandler.sleep(10000);
     }
    catch (Exception e) {
        e.printStackTrace();
         }
         finally
         {
         System.gc();
         System.runFinalization();
         }
         }

второй метод:

 handlerMessage("",0);

    private void handlerMessage(final String messageType, final int dis) 
    {
     new DownLoanPhoto().execute(null);
    }

1 Ответ

2 голосов
/ 20 июня 2011

Вы можете делать все, что хотите, асинхронно, но ВСЕ, что обновляет пользовательский интерфейс, должно выполняться в потоке пользовательского интерфейса.Поэтому вы должны запускать эти операции внутри Runnable с помощью функции runOnUiThread.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...