【问题标题】:how to know AsyncTask working in background or not?如何知道 AsyncTask 是否在后台工作?
【发布时间】:2018-07-02 11:41:50
【问题描述】:

我正在主页中调用一个 Web 服务,因为我将发送所有详细信息,因为该过程在免费环境中运行。当我再次来到这个主页时,我想知道之前的 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");
    }

但是,当我回到这个活动时,如果 asynctask 在后台运行,那么如果我在其顶部创建对象,它也会显示 null 显示未决

【问题讨论】:

标签: android json android-asynctask background-process android-background


【解决方案1】:

根据您的文字,我假设您只需要在此活动中运行此任务,而不需要一次运行多个任务。如果是这种情况,请使用 asynctaskloader。 asynctask 与 Activity 的生命周期相关联,当它启动、在后台运行和完成时,您会收到回调。

AsyncTaskLoader basic example. (Android)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-15
    • 2019-08-13
    • 2013-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多