有人可以帮我解决这个问题。 当片段中有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。 有什么方法可以摆脱这个错误。 请告诉我。
答案 0 :(得分:1)
方法parallelExecute
调用自身,所以它进入无限循环是正常的!
public final AsyncTask<JSONObject, Integer, Boolean> parallelExecute(JSONObject pref) {
return parallelExecute(pref); // <--- here the method calls itself!
}
我希望这有帮助!