как узнать, работает ли AsyncTask в фоновом режиме или нет?

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

  what iam doing exactly here



           public void callAsynchronousTask() {
    //http://stackoverflow.com/questions/6531950/how-to-execute-async-task-repeatedly-after-fixed-time-intervals
    final Handler handler = new Handler();
    Timer timer = new Timer();

        doAsynchronousTask = new TimerTask() {
            @Override
            public void run() {
                handler.post(new Runnable() {
                    public void run() {
                        try {

                            if (vist != null && saves != null && prof != null && semail != null) {
                                if (vist.getStatus() != AsyncTask.Status.RUNNING) {

                                    if (saves.getStatus() == AsyncTask.Status.PENDING || saves.getStatus() == AsyncTask.Status.FINISHED && saves.getStatus() != AsyncTask.Status.RUNNING)
                                    {

                                        if (prof.getStatus() == AsyncTask.Status.PENDING || prof.getStatus() == AsyncTask.Status.FINISHED && prof.getStatus() != AsyncTask.Status.RUNNING)
                                        {


                                            if (semail.getStatus() == AsyncTask.Status.PENDING || semail.getStatus() == AsyncTask.Status.FINISHED && semail.getStatus() != AsyncTask.Status.RUNNING)
                                            {

                                                checkandsave();
                                            }


                                        }
                                    }
                                }
                            } else {
                                checkandsave();
                            }


       public void checkandsave(){

                    ConnectionDetector cd = new ConnectionDetector(Home_page.this);
    Boolean isInternetPresent = cd.isConnectingToInternet();
    if (isInternetPresent) {




        DatabaseToadd da = new DatabaseToadd(Home_page.this);
        mu = new ArrayList<>();
        mu = da.getAllUser();
        if (mu.size() > 0) {


            vist = new Getvisiterid();

         saves=new SaveVisitor();
            semail=new sendemail();
            prof=new saveprofpic();
            vist.executeOnExecutor(THREAD_POOL_EXECUTOR);
        }









    }
    else {
        System.out.println("null db");
    }

но в этом, когда я возвращаюсь к этому действию, если асинтаск работает в фоновом режиме, тогда также отображается ноль, если я создаю объект поверх его отображения в ожидании


person Mikey    schedule 02.07.2018    source источник
comment
Вы можете использовать метод getStatus(): developer.android.com/reference/android /ос/. Он возвращает одно из следующих: developer.android.com/reference/android/os/ AsyncTask.Status   -  person HedeH    schedule 02.07.2018


Ответы (1)


Основываясь на вашем тексте, я делаю предположение, что вам нужно запустить только эту задачу в этом действии, и вам не нужно запускать несколько задач одновременно. В этом случае используйте asynctaskloader. Асинхронная задача привязана к жизненному циклу активности, и вы получаете обратные вызовы, когда она запускается, работает в фоновом режиме и завершается.

Базовый пример AsyncTaskLoader. (Android)

person Adrian Le Roy Devezin    schedule 02.07.2018