android - 如何在一定时间后取消 Android AsyncTask? (例如 10 秒)

标签 android android-asynctask

我想使用 AsyncTask 来检查 InetAddress,如下面的代码所示。变量 tempInet 是一个全局变量,指示该网站是否可联系。

我用代码开始 AsyncTask... new InetAsyncTask().execute("www.facebook.com");

我的问题是我希望 AsyncTask 在(比如)10 秒后自行取消。

其他一些问题建议使用 get(10, TimeUnit.SECONDS) 方法。我想这样做但不确定在哪里/如何放置 get 方法。与执行?在 doInBackground 方法中?

还有,get()方法会阻塞主线程吗?如果是,它的意义何在?

感谢任何帮助。

 class InetAsyncTask extends AsyncTask<String, String, Boolean> {



    @Override
    protected Boolean doInBackground(String... params) {

        try {                 
                InetAddress.getByName("www.facebook.com");
                return true;          

                } catch (UnknownHostException e) {  
                  return false;
                }

    } //end doInBackground function



    protected void onPostExecute(Boolean... result) {

           tempInet = result[0];

    }


   } //end class

相关问题

Android - Setting a Timeout for an AsyncTask?

stop async task after 60 second

Android 开发者 AsyncTask 文档

http://developer.android.com/reference/android/os/AsyncTask.html

最佳答案

您应该创建一个取消 Asynctask 的处理程序 (http://developer.android.com/reference/android/os/AsyncTask.html#cancel(boolean))

向此处理程序发送延迟消息,例如:

Handler.sendMessageDelayed(msg, delayMillis)

private android.os.Handler mHandler = new android.os.Handler() {

    @Override
    public void handleMessage(Message msg) {
        (Your AsyncTask object).cancel(true);
    }
}

关于android - 如何在一定时间后取消 Android AsyncTask? (例如 10 秒),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9839501/

相关文章:

android - 在谷歌地图 fragment 中膨胀 XML 时出错

android - 在 Android 中使用 FFMpeg 稳定视频

android - 使用 Listener 在 AsyncTask 完成时触发事件

android - 如何从 Android AlarmManager 回调执行网络 Activity

android - Android使用带有列表 Activity 的JSON强制关闭并显示错误

java - 从拨号盘调用号码返回警告 : "Call requires permission which may be rejected by user"

Android:如何为自定义 View 创建上下文菜单

java - 无法将上下文从主 Activity 传递到 AsyncTask 以显示 AlertDialog - Android/Java

android - 带有 RecyclerView 的 SwipeRefreshLayout 在 Fragment 中不起作用

java - Asynctask 使用中的警告