我想檢查用戶是否已註冊或不在數據庫中,以及是否獲取用戶的信息。AsyncTask從Json中檢索信息時返回一個布爾值
通常,當我從服務器檢索信息時,我在Json
中輸入了一個變量,表示用戶是否存在。然後在onPostExecute(Void result)
我對待Json
,所以我不需要AsyncTask
返回任何值。
之前,我調用的AsyncTask如下:
task=new isCollectorRegistered();
task.execute();
但我現在嘗試不同的方法。我希望我的asynktask只返回一個布爾值,我在那裏調用AsyncTask
。
的AsyncTask
如下所示:
public class isCollectorRegistered extends AsyncTask<Void, Void, Void> {
private static final String TAG_SUCCESS = "success";
int TAG_SUCCESS1;
private static final String TAG_COLLECTOR = "collector";
public String collector;
JSONArray USER = null;
JSONObject jObj = null;
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... params) {
// Checks on the server if collector is registered
try {
jObj = ServerUtilities.UserRegistered(context, collector);
return null;
} finally {
return null;
}
}
@Override
protected void onPostExecute(Void result) {
try {
String success = jObj.getString(TAG_SUCCESS);
Log.d(TAG_COLLECTOR, "Final Info: " + success);
//This if sees if user correct
if (Objects.equals(success, "1")){
//GOOD! THE COLLECTOR EXISTS!!
}
} catch (JSONException e) {
e.printStackTrace();
Log.d(TAG_COLLECTOR, "JSON parsing didn't work");
}
}
}
我已經檢查了幾個職位,但我仍然還沒有發現檢索,我叫Asynktask布爾的方式,這樣的事情:
task=new isCollectorRegistered();
task.execute();
boolean UserRegistered = task.result();
什麼是正確的方法?任何幫助,將不勝感激
http:// stackoverflow。com/questions/9458258/return-value-from-async-task-in-android – ritesht93
@ ritesht93謝謝!所以實際上是不可能的,一旦AsyncTask正在執行,因爲它正在運行一個完全不同的線程否的值? – Alvaro
是'doInBackground()'在不同的線程中執行,但是您可以將值從'doInBackground()'傳遞給'publishProgress()'或'onPostExecute()'(這兩種方法在活動的UI線程上運行,您可以使用他們堅持你的價值觀) – ritesht93