Android stop asynctask
android, android-asynctask
Solution
You should make a handler which cancels the Asynctask (http://developer.android.com/reference/android/os/AsyncTask.html#cancel(boolean))
Send a delayed message to this Handler like:
Handler.sendMessageDelayed(msg, delayMillis)
private android.os.Handler mHandler = new android.os.Handler() {
@Override
public void handleMessage(Message msg) {
(Your AsyncTask object).cancel(true);
}
}
Problem
I have created an asynctask to show progress dialog while ghetting the users location. I want to run this asynctask for 30 seconds and if in these 30 seconds I haven't found the users location I would like just to kill the task and show an error message. My code so far is like this: ``` userLocation = new AsyncTask<Void, Void, Void>() { private ProgressDialog locationDialog = new ProgressDialog(MainActivity.this); @Override protected void onPreExecute() { super.onPreExecute(); locationDialog.setMessage(getResources().getString(R.string.getting_location)); locationDialog.setCancelable(false); locationDialog.setIndeterminate(true); locationDialog.show(); } @Override protected Void doInBackground(Void... params) { try { latitude = locationProvider.getLatitude(); longitude = locationProvider.getLongitude(); Thread.sleep(10000); } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(Void result) { // getLocation.cancel(true); if (latitude != 0 && longitude != 0) { locationDialog.dismiss(); getData(); } else { locationDialog.dismiss(); alertDialog.show(); Log.d("Couldn't get location", "Couldn't get location"); } } }; userLocation.execute((Void[])null); ``` How should I edit my code so that if the latitude and longitude after 30 seconds is 0, just kill the asynctask and show some kind of error message. Any ideas?