小编Mit*_*tch的帖子

如何检测应用程序何时在颤振中最小化

有没有办法检测应用程序何时最小化?简单地使用WidgetsBindingObserverpaused事件是行不通的,因为它与用户关闭屏幕/手机锁时无法区分。请注意,我需要它同时适用于 android 和 ios。

我正在做的事情的一些背景。在应用程序中,我正在运行一个计时器。如果用户最小化应用程序(例如将其手机用于其他用途),我想停止此计时器。但是,如果用户关闭屏幕/锁定屏幕,我希望计时器继续。

flutter

8
推荐指数
1
解决办法
5711
查看次数

Android MVP 持久化

我正在尝试按照 android 蓝图指南将 MVP 模式实施到我的项目中。目前,我在 Presenter 中保存用户(实体数据),我真的不喜欢它,因为在每次配置更改时,Presenter 都会从数据库中获取用户。

我的第一个问题是:

  • 我应该将我的数据保存在存储库中(因为我使用的是 dagger 2 并且存储库位于应用程序范围内)还是我应该将它保存在演示者中并以某种方式将其保存在那里。我个人希望将其保留在演示者中,但是,我正在尝试以传统方式学习。

我也知道 android 架构组件,尤其是 ViewModel,但是,我想保留 MVP 模式而不是 MVVM。

我的第二个问题是:

  • 实现持久化后,我应该如何将 LiveData 与 MVP 一起使用?

我已经被这个问题困住了很长一段时间,很想最终解决它。

干杯

mvp android

6
推荐指数
1
解决办法
746
查看次数

不推荐使用RoomDatabase回调

在构建应用程序时,我得到以下信息:

[deprecation] mCallbacks in RoomDatabase has been deprecated
Run Code Online (Sandbox Code Playgroud)

不知道如何解决它。这里是依赖项:

implementation "androidx.room:room-runtime:2.1.0-alpha04"
implementation 'androidx.room:room-rxjava2:2.1.0-alpha04'
annotationProcessor "androidx.room:room-compiler:2.1.0-alpha04"
Run Code Online (Sandbox Code Playgroud)

是因为我正在运行Alpha版本吗?

android android-room androidx

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

手势检测器优先级

我有一个堆栈,其中包含一个GestureDetector(这是最上面的层,跨越整个屏幕)和另一个小部件(在它下面),最终有一个ListView. 问题是全局GestureDetector使用onHorizontalDrag消耗了触摸事件。相反,我希望 ListView 仅使用该事件。

简而言之,有没有办法让 theListView优先于 theGestureDetector而不保持某种状态?请注意,ListView不是 的子项/子子项GestureDetector- 它们位于小部件树中的不同分支上。

flutter

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

Android Kotlin协程单元测试

我有一个开始启动协程的broadcastReceiver,我正在尝试对该单元进行测试...

广播:

class AlarmBroadcastReceiver: BroadcastReceiver() {

override fun onReceive(context: Context?, intent: Intent?) {
    Timber.d("Starting alarm from broadcast receiver")
    //inject(context) Don't worry about this, it's mocked out

    GlobalScope.launch {
        val alarm = getAlarm(intent)
        startTriggerActivity(alarm, context)
    }
}

private suspend fun getAlarm(intent: Intent?): Alarm {
    val alarmId = intent?.getIntExtra(AndroidAlarmService.ALARM_ID_KEY, -1)
    if (alarmId == null || alarmId < 0) {
        throw RuntimeException("Cannot start an alarm with an invalid ID.")
    }

    return withContext(Dispatchers.IO) {
        alarmRepository.getAlarmById(alarmId)
    }
}
Run Code Online (Sandbox Code Playgroud)

这是测试:

@Test
fun onReceive_ValidAlarm_StartsTriggerActivity() {
    val alarm …
Run Code Online (Sandbox Code Playgroud)

android kotlin kotlin-coroutines

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