내 PreferenceActivity
에 OnPreferenceChangeListener
을 구현 중입니다. onPreferenceChange
함수에서 값을 유지하기 전에 웹 서비스에 대해 유효성을 검사합니다. 나는 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는 * 비동기 *입니다. AsyncTask의 * out * 코드를 옮기기를 제안하기 전에, 메인 스레드에서 네트워크 작업을해서는 안됩니다. 지금 가지고있는 것에 무엇이 잘못 되었습니까? – CodingIntrigue
메인 스레드에서 실행될 get 함수가 있습니다. 문제는 값을 유지하기 전에 webservice를 사용하여 유효성을 검사해야한다는 것입니다. 편집 : AsyncTask가 완료되기 전에'return mSuccess'가 발생할 수 없습니다. – ashishduh
onPostExecute()가 실행 된 후에도 유지하십시오. 그것이 그 방법이있는 곳입니다. – NickT