SMSをNumberに送信するAPPを開発しています。SMSが非同期タスクの実行に失敗した場合は、インターバル後にSMSを再送信するためにチェックしますが、ここでの非同期タスクが私のコードであることがわからないため、すべての作業が無駄になります。
ASYNCクラス
class checkList extends AsyncTask<String, Void, Void> {
public Void doInBackground(String... p) {
while (true) {
already_running_async=true;
sms.sendTextMessage(phone_nr, null, "SmS Sending", sentPI, null);
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (isCancelled()) break;
}
return null;
}
};
SMS送信コードとエラー処理
bol=false;
already_running_async=false;
check=false;
sms = SmsManager.getDefault();
if(!phone_nr.equals(""))
sms.sendTextMessage(phone_nr, null,"Sms body" , sentPI, null);
sendBroadcastReceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent) {
switch (getResultCode())
{
case Activity.RESULT_OK:
//sms sent if bol true cancel the Asynctask :)
if(bol){
new checkList().cancel(true);}
break;
case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
if(already_running_async==false){
new checkList().execute();
bol=true;}
break;
case SmsManager.RESULT_ERROR_NO_SERVICE:
if(already_running_async==false){
new checkList().execute();
bol=true;}
break;
case SmsManager.RESULT_ERROR_NULL_PDU:
if(already_running_async==false){
new checkList().execute();
bol=true;}
break;
case SmsManager.RESULT_ERROR_RADIO_OFF:
if(already_running_async==false){
new checkList().execute();
bol=true;}
break;
}
}
};
registerReceiver(sendBroadcastReceiver , new IntentFilter(SENT));
問題: タスクは開始しますが、タスクは生きたままで、10秒後にSMSを繰り返し送信します私もキャンセルを入れましたが、SMSが正常に送信された後asyntaskはキャンセルされません
この問題のために私が夜寝ていないのを手伝ってください:(
よろしく