相关疑难解决方法(0)

如何在Android Project中使用ThreeTenABP

我正在添加这个问题,因为我是Java和Android的新手,我搜索了几个小时试图解决这个问题.答案来自相关答案的组合,所以我想我会记录我为其他可能正在努力的人学到的东西.见答案.

对于一些背景知识,我的经验主要是PHP的Web开发和一点Ruby.我唯一的操作系统是Linux(Ubuntu Studio),我(不情愿地)在Android Studio 2.1.2中开发我的第一个Android应用程序.我的Java设置如下:

>java -version
> openjdk version "1.8.0_91"
> OpenJDK Runtime Environment (build 1.8.0_91-8u91-b14-3ubuntu1~15.10.1-b14)
> OpenJDK 64-Bit Server VM (build 25.91-b14, mixed mode)
Run Code Online (Sandbox Code Playgroud)

datetime android android-gradle-plugin threetenbp threetenabp

169
推荐指数
3
解决办法
2万
查看次数

android CountDownTimer - 刻度之间的额外毫秒延迟

从我的观察来看,滴答之间的android CountDownTimer countDownInterval恰好不准确,countDownInterval通常比指定的时间长几毫秒.我的特定应用程序中的countDownInterval是1000毫秒,只需一秒钟倒计时一定时间.

由于这个延长的滴答声,我最终得到的滴答数减少了当倒计时器运行足够长时间,这会缩短所显示的倒计时时间(当有足够的额外ms总结时,在UI级别上发生2秒的步骤)

查看CountDownTimer的来源似乎可以扭曲它,以便纠正这种不必要的不​​准确性,但我想知道在java/android世界中是否已经有更好的CountDownTimer可用.

感谢所有指针的好友......

android

7
推荐指数
1
解决办法
1万
查看次数

How to implement timer with Kotlin coroutines

I want to implement timer using Kotlin coroutines, something similar to this implemented with RxJava:

       Flowable.interval(0, 5, TimeUnit.SECONDS)
                    .observeOn(AndroidSchedulers.mainThread())
                    .map { LocalDateTime.now() }
                    .distinctUntilChanged { old, new ->
                        old.minute == new.minute
                    }
                    .subscribe {
                        setDateTime(it)
                    }
Run Code Online (Sandbox Code Playgroud)

It will emit LocalDateTime every new minute.

kotlin kotlinx.coroutines

5
推荐指数
5
解决办法
3068
查看次数

Android 中 Kotlin 上的计时器实现:应该使用带延迟的协程还是 CountDownTimer

根据这个答案的评论,使用CountDownTimer

val timer=object:CountDownTimer(Long.MAX_VALUE,10){
            override fun onTick(p0: Long) {
                _mutableLiveData.postValue(newValue)
            }
            override fun onFinish() {
                TODO("Not yet implemented")
            }
        }.also { it.start() }
Run Code Online (Sandbox Code Playgroud)

从 a 内部ViewModel否则会导致内存泄漏。另一方面使用实现定时器viewModelScope.launch

viewModelScope.launch {
            while (true){
                _mutableLiveData.postValue(newValue)
                delay(10)
            }
}
Run Code Online (Sandbox Code Playgroud)

从内部同样ViewModel浪费资源,因为线程在执行其任务后应该退出而不是进入睡眠状态。

我应该使用哪种方式?

我还错过了其他一些惯用的方式吗?

我的问题的上下文是这样的:在 a 中ViewModel,我的计时器实现(当前使用)定期更改a中正在使用的delay私有状态。MutableLiveDataobserveAsState@Composable

android timer kotlin kotlin-coroutines android-jetpack-compose

5
推荐指数
1
解决办法
3926
查看次数