【问题标题】:Unchecked Call to 'execute(Params...)' as a member of raw type 'android.os.AsyncTask'作为原始类型 'android.os.AsyncTask' 的成员,未选中调用 'execute(Params...)'
【发布时间】:2015-07-11 22:43:10
【问题描述】:

我正在关注 Udacity 上的 google android 教程,但在指定的代码中,我收到以下警告:

作为原始类型“android.os.AsyncTask”的成员对“execute(Params...)”的未选中调用

关于此代码:

DoSomethingTask myTask = new DoSomethingTask();
myTask.execute(); // Warning here

DoSomethingTask:

public class DoSomethingTask extends AsyncTask {

    protected Object doInBackground(Object[] params) {
        ...
    }
}

谁能解释这个警告以及如何解决它?看来它应该按照说明工作......

【问题讨论】:

  • “错误”是指“警告”?
  • 我认为这是任务的参数引起的,尝试扩展 AsyncTask 并删除任务中的 Object[] 参数。或者尝试扩展 AsyncTask 并在 execute(someObject) 中添加一个对象
  • @xwhyLikeThis 就是这样!虽然我清楚地记得最初输入的内容......不知道它是如何消失的!您可以发布一个答案,以便我将其标记为已回答吗?

标签: java android android-asynctask


【解决方案1】:

警告是由任务的参数引起的。尝试使用:

extends AsyncTask<Void, Void, Void>{
    protected Object doInBackground() {
    }
}

或使用:

extends AsyncTask<Object, Void, Void>{
    protected Object doInBackground(Object[] params) {
    }
}
myTask.execute(anyObject);

解释:

This文档解释了AsyncTask的三种类型的含义。

  1. Params,执行时发送给任务的参数类型。

  2. Progress,在后台计算时发布的进度单元的类型。

  3. Result,后台计算结果的类型。

【讨论】:

  • 这个警告是什么意思?! @zp_x
  • @ChintanShah 嗨,我已经添加了解释。基本上要使用它,只要确保类型匹配正确即可。
  • 感谢您添加解释。 @zp_x
【解决方案2】:

改变

AsyncTask asyncTask = new AsyncTask<Object, Void, String>() {

        @Override
        protected String doInBackground(Object... params) {
            return "";
        }
    };

    asyncTask.execute();

到

AsyncTask<Object, Void, String> asyncTask = new AsyncTask<Object, Void, String>() {

        @Override
        protected String doInBackground(Object... params) {
            return "";
        }
    };

    asyncTask.execute();

AsyncTask 引用需要与 AsyncTask 类相同,IDE 不会警告。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-22
    • 2021-04-17
    • 2018-04-13
    • 2014-09-24
    相关资源
    最近更新 更多