次のコードがありました。これは、定期的な (1 秒あたり 1 回の) ブロードキャストを受信するように登録されたクラスで呼び出されていました。
public void onReceive(Context c, Intent i) {
Log.d("NET", "Polling server...");
try {
Request.getChanges();
} catch (Exception e) {
Log.w("NET", "Error polling server: " + e.toString());
}
}
ただし、このコードは BroadcastReceiver として起動されたため、UI スレッドで実行されたため、次のようになりました。
Error polling server: android.os.NetworkOnMainThreadException
そこで、代わりに AsyncTask で試してみることにしました。
public void onReceive(Context c, Intent i) {
class Task extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... arg0) {
Log.d("NET", "Polling server...");
try {
Request.getChanges();
} catch (Exception e) {
Log.w("NET", "Error polling server: " + e.toString());
}
return null;
}
}
new Task().execute();
}
ただし、これを行うと、出力がまったく得られません。ここで何が問題なのか分かりますか?ありがとう!