相关疑难解决方法(0)

224
推荐指数
11
解决办法
9万
查看次数

取消执行AsyncTask的理想方法

我在后台线程中运行远程音频文件获取和音频文件播放操作AsyncTask.甲Cancellable进度条示出了用于提取操作运行的时间.

我想AsyncTask在用户取消(决定)操作时取消/中止运行.处理这种情况的理想方式是什么?

android android-asynctask

107
推荐指数
4
解决办法
14万
查看次数

Android - 强力取消AsyncTask

我在我的一个活动中实现了AsyncTask:

 performBackgroundTask asyncTask = new performBackgroundTask();
 asyncTask.execute();
Run Code Online (Sandbox Code Playgroud)

现在,我需要实现"取消"按钮功能,所以我必须停止执行正在运行的任务.我不知道如何停止运行任务(后台任务).

所以请建议我,如何有力地取消AsyncTask?

更新:

我找到Cancel()了相同的方法,但我发现调用cancel(boolean mayInterruptIfRunning)不一定会停止执行后台进程.似乎发生的一切是AsyncTask将执行onCancelled(),并且在完成时不会运行onPostExecute().

android android-asynctask

62
推荐指数
4
解决办法
9万
查看次数

AsyncTask取消无效

我正在学习如何取消asyncTask,因此下面的代码没有用处.

我试图调用asyncTask并执行它然后取消它并执行它.

        MyAsyncTask asyncTask = new MyAsyncTask();
        Log.i("cancel","cancel 1");     
        asyncTask.execute();
        Log.i("cancel","cancel 2");
        asyncTask.onCancelled();
        Log.i("cancel","cancel 3");
        asyncTask.execute();
        Log.i("cancel","cancel done");
Run Code Online (Sandbox Code Playgroud)

"取消1"和"取消2"在logcat上显示正确执行,但当"取消3"试图执行时抛出ActivityThread.performLaunchActivity错误.(在logcat上没有显示取消3)我的asyncTask代码有什么问题吗?

private class MyAsyncTask extends AsyncTask<String,Integer,Void>{

    private ArrayList<Map<String, String>> list;
    private ProgressBar progressBar;
    @Override
    protected Void doInBackground(String... arg0) {

        progressBar = (ProgressBar)findViewById(R.id.year_expense_progressbar);
        progressBar.setVisibility(View.VISIBLE);
        getListView().setVisibility(View.GONE);
        textView.setVisibility(View.GONE);

        list = new ArrayList<Map<String, String>>();

        String time = "";
        String category = "";
        String expense = "";
        String day = "";
        String month = "";


        totalExpense = 0;       


        Cursor c = SQLLiteAdapter.fetchAllItems();

        while(c.moveToNext() != false){

            if(isCancelled()){
                Log.e("cancel","cancel …
Run Code Online (Sandbox Code Playgroud)

multithreading android android-asynctask

2
推荐指数
1
解决办法
7274
查看次数