私はAsyncTaskについて学び、サブクラスではなく別のクラスとして使いたいと思っています。例えばAndroid、AsyncTaskを別のクラスに配置してコールバックできますか?
、
class inetloader extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
String response = "";
DefaultHttpClient client = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(urls[0]);
try {
HttpResponse execute = client.execute(httpGet);
InputStream content = execute.getEntity().getContent();
BufferedReader buffer = new BufferedReader(
new InputStreamReader(content));
String s = "";
while ((s = buffer.readLine()) != null) {
response += s;
}
} catch (Exception e) {
e.printStackTrace();
}
return response;
}
@Override
protected void onPostExecute(String result) {
Log.e("xx",result);
// how do I pass this result back to the thread, that created me?
}
}
とメイン(UI)スレッド:
inetloader il = new inetloader();
il.execute("http://www.google.com");
//il.onResult()
//{
///do something...
//}
ありがとう!
はい、あなたは別のクラスに入れることができますが、ほとんどの人はそのpurpo seは通常、内部クラスの場合はもっとはっきりしています。あなたが多くの活動でそれを再利用しようとしているなら、先に進んでください。 – keyser
私は別の目的のために使用する予定です、ここから呼び出すと結果が得られるはずですが、そこから呼び出すと、結果には何か他のことが起きるはずです...そのため、同じクラスの中で、そのクラスの結果を関数から呼び出すようにするには、結果として得られるすべてのアクションに対して新しいAsyncTaskを作成する必要があります。 –
インターフェイスを使用して、 AsynクラスのonPostExcute()でmContext.implementedMethod()を呼び出します。 –