2 qq 30130435 qq_30130435 于 2016.02.22 22:51 提问

Android中为何获取系统时间的方法多次执行后时间仍不变

我自定义了一个view,每次这个view一触碰,就执行方法calendar.get(calendar.second);来获取当前系统秒数,可是每一次触碰后,在MotionEvent.action_down下,系统秒数都是第一次执行后得到的结果,这是为什么?此方法重新执行,不理性得到最新的秒数吗,

4个回答

hyb1996
hyb1996   2016.02.22 23:36
已采纳

我觉得问题是因为,你只初始化了一次Calender calender =Calender.getInstance(),而以后都是用这个calender获取秒数的,而对于同一个calender实例,秒数肯定一样。就是,Calender.getInstance返回的是系统当前时间Calender的实例,但是它获取以后是不变的,不会随着系统时间的推移而更新,要获取实时的实例,要在每次调用时重新获取,即每次点击view时都执行 calender =Calender.getInstance()才能到达你要的效果。

qq_30130435
qq_30130435 已解决!感谢大神!
接近 2 年之前 回复
luochoudan
luochoudan   Ds   Rxr 2016.02.22 23:01

应该是最新的描述,可能是你的程序两次执行的间隔太小,建议你调到毫秒级别上试一下。

luochoudan
luochoudan 回复qq_30130435: 我模棱两可了,hyb1996的正解,Calender.getInstance获取到当前时间的Calender,不会随着系统时间的推移而更新。
接近 2 年之前 回复
qq_30130435
qq_30130435 不应该呀,甚至隔几分钟后再点击还是一样
接近 2 年之前 回复
simpleGW
simpleGW   2016.02.22 23:38

你应该写在一个线程当中每隔一段时间获取时间毫秒数,用System.currentTimeMillis();也可以获取
new Thread(){
run(){
while(true){
System.currentTimeMillis();
Thread.sleep();
}
};
}.start();

qq_30130435
qq_30130435 楼下帮我解决了问题,感谢您的提议!
接近 2 年之前 回复
crazy1235
crazy1235   Ds   Rxr 2016.02.23 10:23

Calender calender =Calender.getInstance()
每次用都要重新获取一次。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!