Android 如何在运行5秒后停止异步线程
必须创建线程并运行5秒,然后我想停止。我该怎么做 我不能用时间/毫秒做任何事情Android 如何在运行5秒后停止异步线程,android,multithreading,asynchronous,Android,Multithreading,Asynchronous,必须创建线程并运行5秒,然后我想停止。我该怎么做 我不能用时间/毫秒做任何事情 THX.使用该方法。使用该方法。很抱歉,这里不清楚。这是我的同步线程示例。 我的函数listen()运行5秒钟,然后退出。Listen()是UDP侦听器 这段代码有一个问题,它会停止我的主线程(我的手机没有响应),直到listed()完成5秒的运行。我想使用异步线程,以避免我的手机冻结。当我说我不能对时间做任何事情时,我试图说我不能在listen()函数中放入某种计时器,然后测量经过的时间,然后在5秒后退出。不能那样
THX.使用该方法。使用该方法。很抱歉,这里不清楚。这是我的同步线程示例。 我的函数listen()运行5秒钟,然后退出。Listen()是UDP侦听器 这段代码有一个问题,它会停止我的主线程(我的手机没有响应),直到listed()完成5秒的运行。我想使用异步线程,以避免我的手机冻结。当我说我不能对时间做任何事情时,我试图说我不能在listen()函数中放入某种计时器,然后测量经过的时间,然后在5秒后退出。不能那样做
Thread t = new Thread() {
public void run() {
try {
listen();
} catch (IOException e) {
Log.d(TAG, "IOException (Discovery) " + e);
e.printStackTrace();
}
synchronized (this) {
notifyAll();
}
}
};
synchronized (t) {
t.start();
try {
t.join(5000); // 5 sec
} catch (InterruptedException e) {
e.printStackTrace();
}
}
对不起,这里不清楚。这是我的同步线程示例。 我的函数listen()运行5秒钟,然后退出。Listen()是UDP侦听器 这段代码有一个问题,它会停止我的主线程(我的手机没有响应),直到listed()完成5秒的运行。我想使用异步线程,以避免我的手机冻结。当我说我不能对时间做任何事情时,我试图说我不能在listen()函数中放入某种计时器,然后测量经过的时间,然后在5秒后退出。不能那样做
Thread t = new Thread() {
public void run() {
try {
listen();
} catch (IOException e) {
Log.d(TAG, "IOException (Discovery) " + e);
e.printStackTrace();
}
synchronized (this) {
notifyAll();
}
}
};
synchronized (t) {
t.start();
try {
t.join(5000); // 5 sec
} catch (InterruptedException e) {
e.printStackTrace();
}
}
java中的线程是协作性的——不能强制停止线程。您可以做的是发出停止信号(调用interrupt()或升起一个标志),然后代码自动停止 因此:
isInterrupted()
并捕获任何中断异常
-在这种情况下退出线程interrupt()
解决方案:在它的
doInBackground()
方法中设置并运行代码。java中的线程是协作的-您不能强制停止线程。您可以做的是发出停止信号(调用interrupt()或升起一个标志),然后代码自动停止
因此:
isInterrupted()
并捕获任何中断异常
-在这种情况下退出线程interrupt()
解决方案:在它的
doInBackground()
方法中设置并运行代码。您想运行5秒钟,而不花时间做任何事情吗?什么?你想跑5秒钟,而不花时间?什么?设置AsyncTask
并在其doInBackground()
方法中运行此代码。设置AsyncTask
并在其doInBackground()
方法中运行此代码。这看起来很不错。我可以使用postDelayed在5秒后取消异步任务吗?谢谢。这看起来很有希望。我可以使用postDelayed在5秒后取消异步任务吗?谢谢