0

有人可以帮我解决这个问题吗?当片段中的 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;

        }

});

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

4

1 回答 1

1

方法parallelExecute调用自己,死循环是正常的!

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

我希望这有帮助!

于 2013-09-26T09:07:22.863 回答