2015-11-16 4 views
0

Я запускаю следующий код в асинтете. По какой-то причине код onGlobalLayout запускается в моем основном потоке активности. Как я могу остановить это и убедиться, что код запущен в моем асинхронном потоке?Запустить код обратного вызова прослушивателя в асинхронном потоке Android

textViewAll.getViewTreeObserver().addOnGlobalLayoutListener(
      new OnGlobalLayoutListener() { 
       @SuppressLint("NewApi") 
       @Override 
       public void onGlobalLayout() { 

           //My code occurs here 

       } 
      }); 
+0

Запустите 'AsyncTask' в' onGlobalLayout' методе. и объясните больше, что проблема с использованием текущего кода –

+0

Подождите, так что запустите другую асинтезу в методе ongloballayout, даже если этот код выполняется внутри асинтезы, которую я хотел бы использовать? – Userrrrrrrrr

+0

Проблема в том, что я запускаю некоторые длинные операции в этом методе ongloballayout и тот факт, что код работает в потоке ui, заставляет ui замерзать – Userrrrrrrrr

ответ

1

Как я могу остановить это, и убедитесь, что код работает в моем AsyncTask нить?

Создайте внутренний класс, расширяя AsyncTask и переместить весь код с делают длительной эксплуатации материала в doInBackground методе и если хотят обновить элементы пользовательского интерфейса в соответствии с результатом длительной работы вещи затем вернуть результат из doInBackground и получить его in onPostExecute способ.

Просто позвоните AsyncTask.execute() в onGlobalLayout способ.

Смежные вопросы