gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:18:27 26 4
gpt4 key购买 nike

我想使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com