2015-04-12 8 views
-3

Я пытаюсь найти информацию об AsyncTack. Как обновить пользовательский интерфейс после выполнения asyntack. Пример: У меня есть 2 java-файла.Обновление пользовательского интерфейса AsyncTask

файл 1: Myfragment.java, файл 2: MyAsyntack.java

в этом случае, я выполнить MyAsyntack на MyFragment. после Execute я хочу обновить интерфейс.

В MyAsyntack, я обновляю базу данных (делая в фоновом режиме). Любое тело может помочь?

+0

Показать код, поэтому мы знаем, что вы пробовали. – Siddharth

ответ

1

Вы можете установить интерфейс в AsyncTask и вызвать его в onPostExecute для обновления интерфейса.

public inteface UpdateUI() 
{ 
    public void update(); 
} 

затем в вашем AsyncTask объявить updateUI как это:

UpdateUI updater; 
public MyAsyntack (UpdateUI updater) 
{ 
    this.updater = updater; 
} 
@Override 
protected void onPostExecute(String result) 
{ 
    super.onPostExecute(result); 
    updater.update(); 
} 

и, наконец, в своей деятельности:

MyAsyntack myAsyncTask = new MyAsyntack(new UpdateUI(){ 
        //how you want to update UI 
        } 
        ); 
myAsyncTask.execute(); 
+0

Большое спасибо, его работа. Я пытаюсь изменить UpdateUI, чтобы Thread тоже работал –

+1

@Rahmanza. Было бы неплохо ответить _ccept, нажав галочку рядом с ним, если это вам помогло :-) – JonasCz

0

doInBackground() на рабочем потоке и может быть использован для таких как сетевые вызовы на сервер.

При получении данных вы можете обновить интерфейс пользователя onPostExecute (..), который находится в потоке пользовательского интерфейса.

p.s. return doInBackground будет аргументом для onPostExecute (..)