从片段调用外部AsyncTask时出错

时间:2013-09-16 19:53:04

标签: android-fragments android-asynctask

有人可以帮我解决这个问题。 当片段中有SharedPreference更改时,我正在调用AsyncTask。

公共类UbiSavePreferenceTask扩展了AsyncTask {

    public final AsyncTask<JSONObject, Integer, Boolean> parallelExecute(JSONObject pref) {
    return parallelExecute(pref);
}

在我的片段中

emailNotificationPref.setOnPreferenceChangeListener(new OnPreferenceChangeListener(){

        @Override
        public boolean onPreferenceChange(Preference preference,Object newValue) {
            JSONObject json = new JSONObject();
            try {
                json.put("Email", newValue);
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            UbiSavePreferenceTask savePref = new UbiSavePreferenceTask(mContext);
            savePref.parallelExecute(json);

            return true;

        }

});

但Async任务中的parallelExecute方法进入无限循环,所以我得到stackOverflowError。 有什么方法可以摆脱这个错误。 请告诉我。

1 个答案:

答案 0 :(得分:1)

方法parallelExecute调用自身,所以它进入无限循环是正常的!

public final AsyncTask<JSONObject, Integer, Boolean> parallelExecute(JSONObject pref) {
    return parallelExecute(pref); // <--- here the method calls itself!
}

我希望这有帮助!