我使用以下代码访问网址:
final Handler handler = new Handler();
Runnable runnable = new Runnable()
{
public void run()
{
img.setImageBitmap(returnBitmap("fromurl"));
handler.postDelayed(this, 50);
}
};
handler.postDelayed(runnable, 2000);
我观察到,如果服务器未启动,则应用程序需要很长时间才能正确关闭,如果我按下后退按钮。无论如何,我可以加快退出程序。
答案 0 :(得分:1)
使用run()
方法完成后,Runnables将自动退出。如果你使用循环来做一些工作,Jay Ho建议的解决方案将有助于干净地退出循环。如果您想阻止Handler
执行runnable(在发布之前),您可以使用handler.removeCallbacksAndMessages(null)
1清除队列。将其放在onDestroy()
中是最好的选择。否则,你就是靠自己。一旦你产生了一个线程,你就会受到Android操作系统的支配,一旦完成它就会终止它。
旁注:我之前遇到过这样的问题,通常是调用系统服务或实现广播监听器或警报来破坏退出过程。
答案 1 :(得分:0)
private Runnable runnable = new Runnable() {
private boolean killMe=false;
public void run() {
//some work
if(!killMe) {
img.setImageBitmap(returnBitmap("fromurl"));
handler.postDelayed(this, 50);
}
}
public void kill(){
killMe=true;
}
};
ThreadPoolExecutor threadPoolExecutor = Executors.newSingleThreadExecutor();
Runnable longRunningTask = new Runnable();
// submit task to threadpool:
Future longRunningTaskFurure = threadPoolExecutor.submit(longRunningTask);
... ...
// At some point in the future, if you want to kill the task:
longRunningTaskFuture.cancel(true);
... ...