如何将我的服务转换为与AsyncTask一起运行?

时间:2018-06-29 15:10:36

标签: java android android-asynctask

我正在尝试将服务中执行的内容转换为AsyncTask,以使其更好。但是,我是这个概念的新手,在设置它时遇到了麻烦(不知道放在哪里)。 按下onHandleIntent中的按钮后,就会在MainActivity上执行此服务。

应该在doInBackground()中运行的部分(collectData()获取有关手机中应用程序的数据使用情况信息):

    Utils.d("On Handle Inent Called -- Will collect Data");
    newStartTime = intent.getLongExtra("startTime",0);
    newEndTime = intent.getLongExtra("endTime",0);
    dataUsage = collectData();

运行onPostExecute()的部分(启动一个列出应用程序及其数据使用情况的新活动):

    isWifi = intent.getBooleanExtra("isWifi",true);
    Intent intentActivity = new Intent(this, DataDisplayActivity.class);
    intentActivity.putExtra("dataUsage",dataUsage.toString());
    intentActivity.putExtra("isWifi",isWifi);
    startActivity(intentActivity);

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

        new AsyncTask<Void, Void, Void>() {

            @Override
            protected Void> doInBackground(Void... params) {
                Utils.d("On Handle Inent Called -- Will collect Data");
                newStartTime = intent.getLongExtra("startTime",0);
               newEndTime = intent.getLongExtra("endTime",0);
               dataUsage = collectData();
               return null;
            }

            @Override
            protected void onPostExecute(Void void) {
                super.onPostExecute(showsForBucket);
                isWifi = intent.getBooleanExtra("isWifi",true);
                Intent intentActivity = new Intent(this, DataDisplayActivity.class);
                intentActivity.putExtra("dataUsage",dataUsage.toString());
                intentActivity.putExtra("isWifi",isWifi);
                startActivity(intentActivity);
            }
        }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);