Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 异步任务不兼容类型_Android_Android Asynctask - Fatal编程技术网

Android 异步任务不兼容类型

Android 异步任务不兼容类型,android,android-asynctask,Android,Android Asynctask,我有一个从套接字读取的异步任务。DoInBackground在活动打开时运行。我想在活动关闭时取消DoInBackground,但在启动AsyncTask时无法分配变量。 我的班级是:- private class receivingData extends AsyncTask<String, Void, String> { private volatile boolean exit = false; DataInputStream in;

我有一个从套接字读取的异步任务。DoInBackground在活动打开时运行。我想在活动关闭时取消DoInBackground,但在启动AsyncTask时无法分配变量。 我的班级是:-

private class receivingData extends AsyncTask<String, Void, String> {

        private volatile boolean exit = false;
        DataInputStream in;

        byte[] fullBuffer = new byte[7];
        byte[] buffer = new byte[100];  // buffer store for the stream
        int bytes; // bytes returned from read()
        int bytesCount = 0;

        @Override
        protected String doInBackground(String... params) {
            try {
                if (socket.isConnected()) {
                    in = new DataInputStream(socket.getInputStream());
                    //Log.d(TAG,"In async receive data run, connected");
                }
            }catch(Exception e){
                Log.d(TAG, "in async receiveData - run exception - " + e.toString());
            }
            while(!exit){
                try {
                    bytes = in.read(buffer);        // Get number of bytes and message in "buffer"
                    System.arraycopy(buffer,0,fullBuffer,bytesCount,bytes);
                    bytesCount = bytesCount + bytes;
                    if(bytesCount >= 7) {
                        hdt.obtainMessage(RECEIVED_MESSAGE, bytesCount, -1, fullBuffer).sendToTarget();     // Send to message queue Handler
                        Log.d("DTA Read - ", "Message sent");
                        bytesCount = 0;
                        Log.d("DTA Read - ", "bytesCount re-set");
                    }
                }catch(Exception e){
                    Log.d(TAG, "Read Error - " + e.toString());
                }
            }
            return "Executed";
        }

        @Override
        protected void onPostExecute(String result) {
        }

        @Override
        protected void onPreExecute() {}

        @Override
        protected void onProgressUpdate(Void... values) {}
    }
这给了我一个不兼容的类型错误

上面写着——

Required DateTimeActivity.receivingData
发现

android.os.asyncTask    <java.lang.string, java.lang.void, ava.lang.string>
android.os.asyncTask

任何帮助都将不胜感激。

您需要首先分配变量,然后启动异步任务:

    // start async task to receive data
    mRecData = new DateTimeActivity.receivingData();
    mRecData.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
    // start async task to receive data
    mRecData = new DateTimeActivity.receivingData();
    mRecData.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);