あなたの助けとハッピークリスマスに感謝します。
Ok。
これで、次のクラスができました。これは、インターネットからデータを取得するために、メインのアクティビティでインスタンス化します。
ご覧のとおり、クラスにはインターネットからのデータ収集を実行するAsyncTaskが含まれています。
アクティビティが一時停止されたら(エミュレータの[戻る]ボタンを使用)、AsyncTaskを停止します。
それでも、AsyncTaskがインターネットからデータをフェッチしようとし続けているため、LogCatはメッセージを表示し続けます。
これがLogCatです、止まることはありません...
12-24 09:36:48.806: E/grabXML(698): java.lang.IllegalStateException: Manager is shut down.
12-24 09:36:48.816: E/grabXML(698): Exception fetching data
12-24 09:36:48.816: E/grabXML(698): java.lang.IllegalStateException: Manager is shut down.
12-24 09:36:48.836: E/grabXML(698): Exception fetching data
12-24 09:36:48.836: E/grabXML(698): java.lang.IllegalStateException: Manager is shut down.
12-24 09:36:48.846: E/grabXML(698): Exception fetching data
12-24 09:36:48.846: E/grabXML(698): java.lang.IllegalStateException: Manager is shut down.
12-24 09:36:48.856: E/grabXML(698): Exception fetching data
12-24 09:36:48.856: E/grabXML(698): java.lang.IllegalStateException: Manager is shut down.
12-24 09:36:48.966: E/grabXML(698): Exception fetching data
12-24 09:36:48.966: E/grabXML(698): java.lang.IllegalStateException: Manager is shut down.
12-24 09:36:48.996: E/grabXML(698): Exception fetching data
12-24 09:36:48.996: E/grabXML(698): java.lang.IllegalStateException: Manager is shut down.
12-24 09:36:49.037: E/grabXML(698): Exception fetching data
12-24 09:36:49.037: E/grabXML(698): java.lang.IllegalStateException: Manager is shut down.
これが私のクラスです
public class Grab{
public String url;
public String srt = "cav";
public boolean flag = false;
public GrabXml g;
public Grab (String u){
url = u;
}
public String vai(){
g = new GrabXml();
g.execute();
Log.e("", srt);
while(!flag){
// nothing
};
g.cancel(true);
return srt;
}
public void fermaGrab() {
g.cancel(true);
}
public class GrabXml extends AsyncTask<Void, String, Void>{
@Override
protected Void doInBackground(Void... arg0) {
Log.e("", "arrivo al do in background");
Log.e("", url);
DefaultHttpClient client = new DefaultHttpClient();
HttpGet getMethod = new HttpGet(url);
try {
ResponseHandler<String> responseHandler = new BasicResponseHandler();
srt = client.execute(getMethod, responseHandler);
Log.e("", "passo per GrabXML");
}
catch (Throwable t) {
android.util.Log.e("grabXML", "Exception fetching data", t);
}
flag = true;
client.getConnectionManager().shutdown();
return null;
}
@Override
protected void onProgressUpdate(String... item) {
// nothing
}
@Override
protected void onPostExecute(Void unused) {
flag = true;
}
}
}