как узнать AsyncTask работает в фоновом режиме или нет? - PullRequest
0 голосов
/ 02 июля 2018

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

  what iam doing exactly here



           public void callAsynchronousTask() {
    ///5457241/kak-vypolnit-asinhronnuy-zadachu-povtorno-cherez-fiksirovannye-promezhutki-vremeni
    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");
    }

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

1 Ответ

0 голосов
/ 02 июля 2018

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

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

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