可以在不同的类中使用连接类(AsyncTask)吗?
例如,我在MainActivity中有以下代码,但我想在不同的活动中使用它,我如何将它用作辅助线程?:
public class Connect extends AsyncTask<String, Void, String> {
String resultadoConexion;
@Override
protected String doInBackground(String... urls) {
Connection conn;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://XXXXXXXXXX?user=XXXX&password=XXXX");
Log.i("Exito","Conexion a la base de datos realizada con exito");
resultadoConexion = "Conectado";
}
catch (Exception e)
{
resultadoConexion = "Error al conectar";
Log.i("ErrorBBDD", "Error: " + e.getMessage());
e.printStackTrace();
}
return resultadoConexion;
}
//Metodo que ejecuta la tarea del hilo
public void Conectar() {
Connect task = new Connect();
task.execute();
}
//Creamos el metodo setText para poder asignar dentro del hilo secundario
private void setText(final TextView text, final String value)
{
runOnUiThread(new Runnable(){
@Override public void run(){
text.setText(value);
}
});
}
}
答案 0 :(得分:1)
将内联类放在单独的类文件中并重复使用。
ConnectAsyncTask.class
public class ConnectAsyncTask extends AsyncTask<String, Void, String> {
String resultadoConexion;
@Override
protected String doInBackground(String... urls) {
Connection conn;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://XXXXXXXXXX?user=XXXX&password=XXXX");
Log.i("Exito","Conexion a la base de datos realizada con exito");
resultadoConexion = "Conectado";
}
catch (Exception e)
{
resultadoConexion = "Error al conectar";
Log.i("ErrorBBDD", "Error: " + e.getMessage());
e.printStackTrace();
}
return resultadoConexion;
}
//Metodo que ejecuta la tarea del hilo
public void Conectar() {
Connect task = new Connect();
task.execute();
}
//Creamos el metodo setText para poder asignar dentro del hilo secundario
private void setText(final TextView text, final String value)
{
runOnUiThread(new Runnable(){
@Override public void run(){
text.setText(value);
}
});
}
然后在任何你想要的地方使用它:
MyActivity1:
import package...ConnectAsyncTask;
public void onCreate(Bundle savedinstance) {
new ConnectAsyncTask().execute(url);
}
MyActivity2:
import package...ConnectAsyncTask;
public void onCreate(Bundle savedinstance) {
new ConnectAsyncTask().execute(url);
}
或直接重用您活动的内部类。例如,您的活动名称是MyActivity,那么您可以获得连接任务的实例,如下所示:
new MyActivity.Connect()