J'ai une AsyncTask qui lit à partir d'une socket. DoInBackground s'exécute pendant que l'activité est ouverte. Je souhaite annuler DoInBackground lorsque l'activité se ferme mais ne peut pas affecter la variable lors du démarrage de la tâche asynchrone. Ma classe est: -Async Tâche incompatible types
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) {}
}
Je déclare une variable et à partir du AsyncTask comme celui-ci.
private DateTimeActivity.receivingData mRecData;
// start async task to receive data
mRecData = new DateTimeActivity.receivingData().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
Cela me donne une erreur de type incompatible.
Il dit -
Required DateTimeActivity.receivingData
Trouvé
android.os.asyncTask <java.lang.string, java.lang.void, ava.lang.string>
Toute aide serait appréciée.