0
は、その後Webサービスは、データごとに2分は私がその応答データを取得するためにWebサービスにアクセスするための別のASyncTaskクラスを構築し、応答
を与えることを抽出し、私はタイマーでASyncTaskを実行すると、それがクラッシュしますアプリが最初に再試行したときに、タスクがすでに実行されていたと言う
public class GetPaymentsResult extends AsyncTask<Integer, Void, String>{
MainActivity mainActivity = MainActivity.getInstance();
public String SOAP_ACTION = "https://webservice/method";
public String METHOD_NAME = "method";
public String NAMESPACE = "https://webservice/";
public String URL = "https://webservice/payments.asmx";
private SoapObject request;
private HttpTransportSE httpTransport;
private SoapSerializationEnvelope envelope;
public Object response = null;
public static String resultinfo;
@Override
protected String doInBackground(Integer... params){
resultinfo = null;
request = new SoapObject(NAMESPACE, METHOD_NAME);
PropertyInfo pi = new PropertyInfo();
PropertyInfo pi2 = new PropertyInfo();
pi.setName("RequestID");
pi.setValue(010101);
pi.setType(Integer.class);
request.addProperty(pi);
pi2.setName("APIKey");
pi2.setValue("1234-1234-1234");
pi2.setType(String.class);
request.addProperty(pi2);
envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
httpTransport = new HttpTransportSE(URL);
try{
httpTransport.call(SOAP_ACTION, envelope);
response = envelope.getResponse();
}catch(Exception e){
e.printStackTrace();
response = e.getMessage();
}
return response.toString();
}
@Override
protected void onPostExecute(final String result){
super.onPostExecute(result);
mainActivity.getHandler().post(new Runnable() {
@Override
public void run() {
System.out.println(result);
resultinfo = result;
}
});
}
}
と、私は10秒ごとまたはそう、このタスクを呼び出すためにカウントダウンタイマーを使用しています:
public CountDownTimer timer(){
CountDownTimer times = new CountDownTimer(10000, 20) {
@Override
public void onTick(long millisUntilFinished) {
}
@Override
public void onFinish() {
checkPaymentreturn();
}
}.start();
return times;
}
私はこれを行うべきである適切な方法があると確信している、ことができます誰でも助けてください?
これは私が受け取るエラーです:
**08-09 11:37:21.169 17098-17098/com.app E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.app, PID: 17098
java.lang.IllegalStateException: Cannot execute task: the task has already been executed (a task can be executed only once)
at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:579)
at android.os.AsyncTask.execute(AsyncTask.java:535)
at com.app.ui.CitationFragment$1.onFinish(CitationFragment.java:179)
at android.os.CountDownTimer$1.handleMessage(CountDownTimer.java:127)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:5944)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
"既に実行中"のメッセージは何ですか?あなたのアプリまたはあなたのいわゆるWebサービス? – muratgu
私のアプリ、その致命的な例外を与える – buradd
ルール#1:すべてのエラーメッセージを投稿してください。 – muratgu