Todo está en el título.¿Es posible usar AsyncTask en una clase de servicio?
En la documentación oficial se indica que Note that services, like other application objects, run in the main thread of their hosting process
y AsyncTask solo funciona si se ejecuta en UIThread.
¿Es posible utilizar AsyncTask en una clase de servicio?
estoy tratando de hacerlo pero yo siempre estoy recibiendo el mismo error
05-01 18:09:25.487: ERROR/JavaBinder(270): java.lang.ExceptionInInitializerError
...
05-01 18:09:25.487: ERROR/JavaBinder(270): Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
¿Estoy haciendo algo mal o es sólo imposible?
Aquí está el código de mi clase de servicio
package com.eip.core;
import android.app.Service;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.IBinder;
import android.os.RemoteException;
import android.util.Log;
public class NetworkService extends Service {
private final INetwork.Stub mBinder = new INetwork.Stub() {
@Override
public int doConnect(String addr, int port) throws RemoteException {
new ConnectTask().execute("test42");
return 0;
}
};
@Override
public IBinder onBind(Intent arg0) {
return mBinder;
}
private class ConnectTask extends AsyncTask<String, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
Log.i("OnPreExecute()", "");
}
@Override
protected Void doInBackground(String... arg0) {
Log.i("doInBackground()", "");
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
Log.i("OnPostExecute()", "");
}
}
}
Hola, esto no viola las reglas de enhebrado ya que su servicio siempre se ejecuta en el hilo de UI hasta que no bifurca los hilos del mismo – user1530779
Así que el código anterior funcionaría bien supongo que está confundido entre servicios y servicios intencionados, Intento servicios ejecutados en un hilo de fondo por defecto – user1530779