Android Функция результата Studio AsyncTask - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть класс SysCall расширяет AsyncTask

конструктор:

public SysCall(Context context,String [] attr,String [] value,String req_page)

, используя при вызове:

String str_result= new SysCall(this,attr,value,"test.php").execute().get();

тогда я начинаю анализировать строка str_result, но не стоит ее ждать, она заморозит интерфейс.

если у меня в классе активности есть метод, который мне нравится делать, когда он работает, sh, который может обращаться ко всем переменным класса, как я могу это сделать?

1 Ответ

1 голос
/ 30 апреля 2020

Что я понимаю из вашего вопроса, так это то, что вы хотите вызвать метод в activity после того, как asyncTask завершил фоновую работу:

Для этого вы должны передать действие вашему конструктору asyncTask:

Предполагается, что ваш activity называется MainActivity (это может быть любое другое имя):

class MainActivity extends .........{
......
......
......

//when you start the asyncTask:

new SysCall(this,attr,value,"test.php",this).execute();


//lets say you have a method called, callActivityMethod

public void callActivityMethod(){

 ....................

}



}

В AsyncTask передайте ссылку MainActivity:

SysCall extends AsyncTask,,,,,,,,,,,,

...................
private MainActivity activity;


public SysCall(Context context,String [] attr,String [] value,String req_page, MainActivity activity){

...........
this.activity = activity;


}


//call the method from here
@Override
protected void onPostExecute(........) {
//this is called after your task is finished

//call the activity method
activity.callActivityMethod();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...