1

AsyncTask 内部クラスを介して、Android アクティビティから Web サービスに投稿しています。私の考えは、Web サービスに投稿するたびにということです。AsynTask がアクティビティに文字列値を返して、web サービスへの投稿が成功したか失敗したかをアクティビティに通知するようにします。get メソッドを使用してこれを行いましたが、ボタンをクリックして投稿すると、応答する前に UI がしばらくフリーズすることに気付きました。しかし、投稿はまだ機能します。この UI のフリーズを防ぐ方法はありますか。私のコードは以下です。

これは私の AsyncTask クラスの doBackground メソッドです

    @Override
    protected String doInBackground(String... arg0) {
        // TODO Auto-generated method stub

        String result = "";

        PatientModel patient = new PatientModel();
        patient.setPhone(Phone);
        patient.setEmail(Email);        
        patient.setGCMRegistrationID(GCMRegistrationID);

        JSONHttpClient jsonHttpClient = new JSONHttpClient();
        patient = (PatientModel) jsonHttpClient.PostObject(RestfulServiceUrl.RegisterPatient, patient, PatientModel.class);
        GCMRegistrar.setRegisteredOnServer(context, true);

        if(patient != null) {

            result = patient.getPhone();
        }
        else if(patient == null){
            result = "failed";
        }

        return result;
    }

これは、アクティビティで値を収集するスクリプトです

try {                       
    String result = new RegisterPatient(RegisterActivity.this,resource,email,phone,regId).execute().get();
}
catch(Exception e){
}
4

2 に答える 2

1

非同期呼び出しを同期呼び出しに変えるため、get()を実装するときにメソッドを使用しないでください。AsyncTask通常、結果の取得は、応答を受信するオブジェクトによって実装されるカスタム リスナー インターフェイスを使用して実装されます。

于 2013-09-16T09:59:49.270 に答える