Я пытаюсь создать простой трекер экрана, который также отслеживает ваш экран, когда он выключен. По какой-то причине кажется, что screenTimeRunnable не хочет останавливаться, и поэтому offScreenTimeRunnable никогда не получает возможности обновить offScreenTime. Я точно не знаю, в этом ли дело.
2024-10-16 14:14:08.183 D Posting screenTimeRunnable
2024-10-16 14:14:08.349 D Screen time: 1000, Off screen time: 0, Points: 0
2024-10-16 14:14:08.353 D Posting screenTimeRunnable
2024-10-16 14:14:08.386 D Screen time: 2000, Off screen time: 0, Points: 0
2024-10-16 14:14:09.388 D Screen time: 3000, Off screen time: 0, Points: 0
2024-10-16 14:14:10.390 D Screen time: 4000, Off screen time: 0, Points: 0
2024-10-16 14:14:11.393 D Screen time: 5000, Off screen time: 0, Points: 0
2024-10-16 14:14:12.396 D Screen time: 6000, Off screen time: 0, Points: 0
2024-10-16 14:14:13.400 D Screen time: 7000, Off screen time: 0, Points: 0
2024-10-16 14:14:13.827 D visibilityChanged oldVisibility=true newVisibility=false
2024-10-16 14:14:13.922 D endAllActiveAnimators on 0x73c188c1b040 (UnprojectedRipple) with handle 0x73c058c54aa0
2024-10-16 14:14:14.293 D Screen OFF detected
2024-10-16 14:14:14.293 D screenOn set to: false
2024-10-16 14:14:14.293 D Posting offScreenTimeRunnable
2024-10-16 14:14:14.409 D Screen time: 8000, Off screen time: 0, Points: 0
2024-10-16 14:14:15.412 D Screen time: 9000, Off screen time: 0, Points: 0
2024-10-16 14:14:16.414 D Screen time: 10000, Off screen time: 0, Points: 0
2024-10-16 14:14:17.416 D Screen time: 11000, Off screen time: 0, Points: 0
2024-10-16 14:14:18.417 D Screen time: 12000, Off screen time: 0, Points: 0
2024-10-16 14:14:19.419 D Screen time: 13000, Off screen time: 0, Points: 0
2024-10-16 14:14:20.238 D Screen ON detected
2024-10-16 14:14:20.239 D screenOn set to: true
2024-10-16 14:14:20.243 D Posting screenTimeRunnable
2024-10-16 14:14:20.424 D Screen time: 14000, Off screen time: 0, Points: 0
2024-10-16 14:14:21.426 D Screen time: 15000, Off screen time: 0, Points: 0
2024-10-16 14:14:22.429 D Screen time: 16000, Off screen time: 0, Points: 0
2024-10-16 14:14:23.432 D Screen time: 17000, Off screen time: 0, Points: 0
2024-10-16 14:14:24.433 D Screen time: 18000, Off screen time: 0, Points: 0
Я уже пробовал использовать handler.removeCallbacksAndMessages(null) как отдельно, так и с тем, что у меня уже есть.
Я ожидаю screenTime, чтобы остановить приращение, когда offScreenTime выключен, и offScreenTime, чтобы начать приращение.
Я пытаюсь создать простой трекер экрана, который также отслеживает ваш экран, когда он выключен. По какой-то причине кажется, что screenTimeRunnable не хочет останавливаться, и поэтому offScreenTimeRunnable никогда не получает возможности обновить offScreenTime. Я точно не знаю, в этом ли дело. [code]interface ScreenTimeUpdateListener { fun onScreenTimeUpdated(screenTime: Long, offScreenTime: Long) } class ScreenTimeReceiver : BroadcastReceiver() { var listener: ScreenTimeUpdateListener? = null
private var screenOn = true private var screenTime = 0L private var offScreenTime = 0L private val handler = Handler(Looper.getMainLooper()) private val updateInterval = 1000L
private val screenTimeRunnable = object : Runnable { override fun run() { if (screenOn) { screenTime += updateInterval listener?.onScreenTimeUpdated(screenTime, offScreenTime) } handler.postDelayed(this, updateInterval) } }
private val offScreenTimeRunnable = object : Runnable { override fun run() { if (!screenOn) { offScreenTime += updateInterval listener?.onScreenTimeUpdated(screenTime, offScreenTime) } handler.postDelayed(this, updateInterval) } }
override fun onReceive(context: Context, intent: Intent) { when (intent.action) { Intent.ACTION_SCREEN_ON -> { Log.d("ScreenTimeReceiver", "Screen ON detected") screenOn = true Log.d("ScreenTimeReceiver", "screenOn set to: $screenOn") resetHandler() } Intent.ACTION_SCREEN_OFF -> { Log.d("ScreenTimeReceiver", "Screen OFF detected") screenOn = false Log.d("ScreenTimeReceiver", "screenOn set to: $screenOn") resetHandler() } } }
private fun resetHandler() { handler.removeCallbacks(screenTimeRunnable) handler.removeCallbacks(offScreenTimeRunnable)
fun stopTracking() { handler.removeCallbacksAndMessages(null) } } [/code] Методы, которые улавливают эти обновления в модели представления: [code]override fun onScreenTimeUpdated(screenTime: Long, offScreenTime: Long) { this.screenTime = screenTime this.offScreenTime = offScreenTime points = (this.offScreenTime / 1000).toInt() Log.d("RealityCheckViewModel", "Screen time: ${this.screenTime}, Off screen time: ${this.offScreenTime}, Points: $points") } [/code] Журналы: [code]2024-10-16 14:14:08.183 D Posting screenTimeRunnable 2024-10-16 14:14:08.349 D Screen time: 1000, Off screen time: 0, Points: 0 2024-10-16 14:14:08.353 D Posting screenTimeRunnable 2024-10-16 14:14:08.386 D Screen time: 2000, Off screen time: 0, Points: 0 2024-10-16 14:14:09.388 D Screen time: 3000, Off screen time: 0, Points: 0 2024-10-16 14:14:10.390 D Screen time: 4000, Off screen time: 0, Points: 0 2024-10-16 14:14:11.393 D Screen time: 5000, Off screen time: 0, Points: 0 2024-10-16 14:14:12.396 D Screen time: 6000, Off screen time: 0, Points: 0 2024-10-16 14:14:13.400 D Screen time: 7000, Off screen time: 0, Points: 0 2024-10-16 14:14:13.827 D visibilityChanged oldVisibility=true newVisibility=false 2024-10-16 14:14:13.922 D endAllActiveAnimators on 0x73c188c1b040 (UnprojectedRipple) with handle 0x73c058c54aa0 2024-10-16 14:14:14.293 D Screen OFF detected 2024-10-16 14:14:14.293 D screenOn set to: false 2024-10-16 14:14:14.293 D Posting offScreenTimeRunnable 2024-10-16 14:14:14.409 D Screen time: 8000, Off screen time: 0, Points: 0 2024-10-16 14:14:15.412 D Screen time: 9000, Off screen time: 0, Points: 0 2024-10-16 14:14:16.414 D Screen time: 10000, Off screen time: 0, Points: 0 2024-10-16 14:14:17.416 D Screen time: 11000, Off screen time: 0, Points: 0 2024-10-16 14:14:18.417 D Screen time: 12000, Off screen time: 0, Points: 0 2024-10-16 14:14:19.419 D Screen time: 13000, Off screen time: 0, Points: 0 2024-10-16 14:14:20.238 D Screen ON detected 2024-10-16 14:14:20.239 D screenOn set to: true 2024-10-16 14:14:20.243 D Posting screenTimeRunnable 2024-10-16 14:14:20.424 D Screen time: 14000, Off screen time: 0, Points: 0 2024-10-16 14:14:21.426 D Screen time: 15000, Off screen time: 0, Points: 0 2024-10-16 14:14:22.429 D Screen time: 16000, Off screen time: 0, Points: 0 2024-10-16 14:14:23.432 D Screen time: 17000, Off screen time: 0, Points: 0 2024-10-16 14:14:24.433 D Screen time: 18000, Off screen time: 0, Points: 0 [/code] Я уже пробовал использовать handler.removeCallbacksAndMessages(null) как отдельно, так и с тем, что у меня уже есть. Я ожидаю screenTime, чтобы остановить приращение, когда offScreenTime выключен, и offScreenTime, чтобы начать приращение.
Я вращаю изображение с помощью runnable. Я хочу повернуть изображение, например, в четвертый раз, а затем приостановить/остановить вращение. Я написал какую-то функцию
public void rotateImage(final View myView, final int size) {
Я вращаю изображение с помощью runnable. Я хочу повернуть изображение, например, в четвертый раз, а затем приостановить/остановить вращение. Я написал какую-то функцию
public void rotateImage(final View myView, final int size) {
Я получил этот код от коллеги и собираюсь использовать его для обработки файлов размером 100csv для извлечения значений частиц. Код выглядит следующим образом:
import sys
import csv
# Usage
# skdata_decode.py ...
# (It is possible to use filedcard...
У меня возникли проблемы с запуском простого exe-файла... за пределами Visual Studio. (Я рассмотрел ранее опубликованные вопросы, которые сформулированы аналогичным образом, но оказались более сложными ситуациями, связанными с отсутствующими...
У меня возникли проблемы с запуском простого exe-файла... за пределами Visual Studio. (Я просмотрел ранее опубликованные вопросы, которые сформулированы аналогичным образом, но оказались более сложными ситуациями, связанными с отсутствующими...