在我的PreferenceActivity
中,我實現了OnPreferenceChangeListener
。在onPreferenceChange
函數中,我在持久化該值之前對web服務進行驗證。我嘗試使用AsyncTask.get()
,但似乎並沒有強制主線程在返回之前等待。有任何想法嗎?我需要在本地進行驗證嗎?在返回值之前等待AsyncTask完成
@Override
public boolean onPreferenceChange(final Preference preference, final Object value)
{
new WebServiceCall()
{
@Override
protected void onPostExecute(final SoapObject result)
{
if (result == null)
{
mSuccess = false;
return;
}
mSuccess = true;
setSummary(preference, value);
}
}.execute(activity, WEBFUNCTION, selected_ids).get();
return mSuccess;
}
這沒有任何意義。 AsyncTask是* asynchronous *。在我建議移動AsyncTask的代碼之前,你絕對不應該在主線程上執行網絡任務。你現在有什麼問題? – CodingIntrigue
它具有應該在主線程上執行的get函數。問題是我需要在保持值之前使用webservice進行驗證。編輯:我不能有'返回mSuccess'在AsyncTask完成之前發生。 – ashishduh
在onPostExecute()運行後繼續執行。這就是該方法的用處。 – NickT