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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Android中为何获取系统时间的方法多次执行后时间仍不变,解决方法
问题描述:我自定义了一个view,每次这个view一触碰,就执行方法calendar.get(calendar.second);来获取当前系统秒数,可是每一次触碰后,在MotionEvent.action_down下,系统秒数都是第一次执行后得到的结果,这是为什么?此方法重新执行,不理性得到最新的秒数吗 解决办法:1.先写在一个线程当中每隔一段时间获取时间毫秒数,用System.cu
一条广播onReceive方法多次执行
在最近的项目中用到了极光推送,集成进去后,发送自定义消息,接收到自定义消息后,通过广播的形式将消息发送出去,自定义消息自然需要用到自定义的receiver,自定义完成receiver后,运行项目发现一条广播发送后,onReceive()方法竟然执行了多次,尤其是在将消息发送到BaseActivity时,更奇怪的事情发生了,打开了几个activity,onReceive()方法就会执行几次,可是极光
一个方法连续调用多次,但方法体里面的代码只保证最后一次的执行,之前连续调用的方法体都不执行
.
android的application类中,onCreate()被执行多次的原因及解决方案
当App中有多个进程的时候,android的application类中,onCreate()就会被执行多次,所以,我们就要加多一些判断的处理,避免除了主进程的其它进程浪费系统资源! 我们需要在application的onCreate()中: private void initConfig() { String curProcessName = Utils.getProcessN
Activity OnCreate执行两次的原因!
是因为我设置是它横屏: setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 把这句代码去掉就不会了。
避免同一activity下 多个fragment 切换时重复执行onCreateView方法
private View rootView;//缓存Fragment view @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if(rootView==null){
解决java Android 中同一个线程多次运行问题
在java中同一个线程只能被start()一次,当第二次start()就会报异常。但是我们的软件需求常常需要同一个线程多执行同一个方法。为此可以使用notify(),wait()方法来达到我们想要的效果。先看代码public class ThreadTest extends Thread { private static boolean flag = false; public Thr
解决getView()方法反复执行
ListView GridView getView 反复执行
android-继承BaseAdapter--自定义适配器,getView执行多次的解决方法
定义的getView执行多次的ListView布局: <ListView android:id="@+id/lv_messages" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParent
android开发之获取系统时间的方法
今天学习了在android中获取当前系统时间的几种方法 1、首先我们来看一下 如何获取12小时和24小时制时间 [java] view plain copy  print? //通过DateFormat获取系统的时间    String currentTime=DateFormat.format("yy