Android停止异步任务。

3
我创建了一个异步任务来显示进度对话框,同时获取用户的位置。我想要运行这个异步任务30秒钟,如果在这30秒内我没有找到用户的位置,我希望只是终止任务并显示错误消息。
到目前为止,我的代码如下:
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);

我应该如何编辑我的代码,以便在30秒后的纬度和经度为0时,仅终止异步任务并显示某种错误消息。有什么想法吗?


停止AsyncTask的doInBackground方法。 - Raghunandan
但是我怎么能设置时间呢?例如,如果经过30秒后,纬度= 0,那么才取消任务? - Karlis
请使用处理程序或计时器任务代替AsyncTask。 - Raghunandan
1个回答

5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接