я запускаю AsyncTask в mainActivity [Get_IO()]:Как добавить AsyncTask Timeout в этот код?
// Rafraichissmeent de l'activity
refresh = new Runnable() {
public void run() {
// Do something
new Get_IO().execute();
handler.postDelayed(refresh, 10000);
}
};
handler.post(refresh);
Но из-за не имеющие хорошее качество связи, задача по-прежнему ждет, я хочу добавить тайм-аут, но как? Я попытался добавить еще одну задачу, чтобы сделать тайм-аут, но, к сожалению, она не работает.
Вот Get_IO (код):
public class Get_IO extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
//Handler mHandler = new Handler();
//Runnable runnable = new Runnable() {
// @Override
// public void run() {
// if (mAT.getStatus() == Status.RUNNING || mAT.getStatus() == Status.PENDING) {
// mAT.cancel(true); //Cancel Async task or do the operation you want after 1 minute
// }
// }
//};
//mHandler.postDelayed(runnable, 60000);
// Showing progress dialog
pDialog = new ProgressDialog(PortailActivity.this);
pDialog.setMessage("Please wait...");
pDialog.setCancelable(false);
pDialog.show();
}
@Override
protected Void doInBackground(Void... arg0) {
// Creating service handler class instance
ServiceHandler sh = new ServiceHandler();
// Making a request to url and getting response
String jsonStr = sh.makeServiceCall(url_status, ServiceHandler.GET);
Log.d("Response: ", "> " + jsonStr);
if (jsonStr != null) {
try {
JSONObject jsonObj = new JSONObject(jsonStr);
string_input = jsonObj.getString(TAG_INPUT);
string_output = jsonObj.getString(TAG_OUTPUT);
// tmp hashmap for single contact
HashMap<String, String> iostatus = new HashMap<String, String>();
// adding each child node to HashMap key => value
iostatus.put(TAG_INPUT, string_input);
iostatus.put(TAG_OUTPUT, string_output);
} catch (JSONException e) {
e.printStackTrace();
}
} else {
Log.e("ServiceHandler", "Couldn't get any data from the url");
}
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
// Dismiss the progress dialog
if (pDialog.isShowing())
pDialog.dismiss();
TextView lblMobile = (TextView) findViewById(R.id.mobile_label);
lblMobile.setText(string_input.concat(" - ") .concat(string_output));
check_etat_portail();
}
}
Я не понимаю, вещь очень хорошо;)