AsyncTask
以下のコードを実行すると、ユーザーの電話でエラーが発生します。Web サービスの呼び出しを実行する前に、ユーザーが現在通話中かどうかを確認しています。私がこれを行っている理由は、通話中にインターネット接続が失われている人がいるため、5 秒ごとに通話中かどうかを確認するためです。そうでない場合、AsyncTask が呼び出されます
do{
Handler handler = new Handler();
handler.postDelayed(new Runnable(){
@Override
public void run() {
onCall = ((TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE))
.getCallState() != TelephonyManager.CALL_STATE_IDLE;
if(!onCall){
new CallRegWS().execute();
}
}
},5000);
}while(onCall);
完全なスタック トレースはありませんが、これだけでエラーが表示されます
java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
明らかにあまり役に立ちませんが、それが私が続けなければならないすべてです。彼らはそのエラーを受け取り続けているので、ハンドラーを作成するときに発生しているに違いありません。
これはすべて で行われるmain thread
ため、何が問題なのかわかりません。これを修正する方法についての洞察はありますか?
更新 これはサービスから呼び出され、メソッドは別のクラスにあります