java在安卓中经过一段时间后重新执行代码
我在谷歌地图项目中,以下是我在oncreate中的代码:
mapView = (MapView)findViewById(R.id.mapView);
mapView.setBuiltInZoomControls(true);
mapView.setSatellite(false);
mapView.setStreetView(true);
mapController = mapView.getController();
mapController.setZoom(19);
getLastLocation();
drawCurrPositionOverlay();
drawMalls();
animateToCurrentLocation();
但是现在我想把这个叫做DrawMalls();方法,除非用户关闭此应用程序,否则在此时间之后将调用此方法?有没有办法做到这一点
# 1 楼答案
有两种方法
1)使用处理器 2) 使用定时器
# 2 楼答案
您可以按照使用ScheduledExecutorService here的说明进行操作。我以前遇到过一些错误,在2.1版本中,计时器无法正常停止和启动,但所描述的调度方案对我来说非常有效
# 3 楼答案
这个函数每2秒调用一次drawMalls()。。你可以根据需要更改它
# 4 楼答案
若重新执行的代码并没有绑定到应用程序的状态,而只是绑定到时间段,那个么请查看
Timer
类http://developer.android.com/reference/java/util/Timer.html
# 5 楼答案
您可以使用
java.util.Timer
的schedule()
方法安排drawMalls()
的未来执行:我不确定
drawMalls()
是static
还是非静态方法。如果是static
,则直接调用TimerTask.run()
方法。否则,您需要安排drawMalls()
所属的类实例可用于TimerTask
的run()
方法:编辑:
要在每两秒钟后重复运行任务,可以使用:
# 6 楼答案
您可以使用^{} 和^{} 组合在一段时间后执行语句
您可以使用处理程序的postDelayed()方法延迟可运行
如果要取消此操作,则必须使用类似
mHandler.removeCallbacks(mRunnable);
的处理程序的removeCallback()方法或者你可以使用定时器。你可以在这里引用一个例子http://thedevelopersinfo.wordpress.com/2009/10/18/scheduling-a-timer-task-to-run-repeatedly/