小编bla*_*ara的帖子

为什么房间删除操作(使用RxJava)即使指定了不同的订阅线程也会导致UI线程错误?

简而言之,DAO

@Query("DELETE FROM Things WHERE someIdOfTheThing IN (:listOfId)")
abstract fun deleteThings(listOfId: MutableList<String>): Maybe<Int>
Run Code Online (Sandbox Code Playgroud)

用法,

mDisposables.add(mThingsDao
    .deleteThings(listOfId)
    .subscribeOn(Schedulers.io())
    .observeOn(AndroidSchedulers.mainThread())
    .subscribe({
         ...
     }, {
         ...
     })
)
Run Code Online (Sandbox Code Playgroud)

和错误,

// Cannot access database on the main thread since it may potentially lock the UI for a long period of time.
Run Code Online (Sandbox Code Playgroud)

我当时想到的简单想法是先指定subscribeOn(Schedulers.io())然后将所有工作交给Rx的魔术师,但失败了。

那我想念的是什么?


在像下面那样包装并使用后deleteThingsWrapped,开始工作。但是仍然不明白为什么第一种方法不起作用

open fun deleteThingsWrapped(listOfId: MutableList<String>): Maybe<Int> {
    return Maybe.create(object : MaybeOnSubscribe<Int> {
        override fun subscribe(emitter: MaybeEmitter<Int>) {
            emitter.onSuccess(deleteThings(listOfId))
        }
    })
}

@Query("DELETE FROM Things WHERE someIdOfTheThing IN …
Run Code Online (Sandbox Code Playgroud)

android rx-java2 android-room

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

可以通过PlaceId打开谷歌地图吗?

我有一个从Google Places API获得的地方ID,其目的是通过地址ID打开Goog​​le地图应用,如下面的类似方法

Uri gmmIntentUri = Uri.parse(String.format(Locale.ENGLISH,"geo:%f,%f", lat, lon));
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
if (mapIntent.resolveActivity(getPackageManager()) != null) {
    startActivity(mapIntent);
}
Run Code Online (Sandbox Code Playgroud)

有办法吗?

当用户输入例如来自地方API的"艾菲尔铁塔"时,我已经具有纬度,经度.我将这些值存储在下一个用法中(假设我们列出了一些来自本地数据库的访问位置,用户点击其中一个,app导航到Google Maps)

我有一些担忧

  1. 如果我使用纬度 - 经度在Google地图上指示地点而不是地点ID,那么如果"Cafe XYZ"移动到另一条街道会发生什么?

  2. 如果我每次使用地方ID来接收"Cafe XYZ"的最后位置(而不是我本地数据库中存储的值),该应用程序很容易达到请求限制

所以这些问题让我想到了一种只发送地点ID Google Maps的方式(比如发送坐标)

android google-maps google-places-api

4
推荐指数
2
解决办法
2024
查看次数

停止启动画面进入导航栏

我想使用这个启动画面但它继续在导航栏下面.

飞溅img

如何在保持导航栏的同时强制它适合屏幕?

   <style name="splashScreenTheme" parent="@android:style/Theme.DeviceDefault.Light.NoActionBar.Fullscreen">

    <item name="android:windowBackground">@drawable/splash</item>

</style>
Run Code Online (Sandbox Code Playgroud)

java android splash-screen

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

androidx.core:core-ktx:1.7.0 没有任何修改就出现依赖错误?

虽然运行/构建工作正常,但 Android studio 在几个小时后就开始出现此错误。顺便说一句,我确信我从未添加/修改对项目的任何依赖项。

\n
Execution failed for task ':app:checkPrepReleaseAarMetadata'.\n> A failure occurred while executing com.android.build.gradle.internal.tasks.CheckAarMetadataWorkAction\n   > The minCompileSdk (31) specified in a\n     dependency's AAR metadata (META-INF/com/android/build/gradle/aar-metadata.properties)\n     is greater than this module's compileSdkVersion (android-30).\n     Dependency: androidx.core:core-ktx:1.7.0-alpha02.\n     AAR metadata file: /Users/userxyz/.gradle/caches/transforms-2/files-2.1/cefbfad6ef180119f5f4851a3efddbb7/jetified-core-ktx-1.7.0-alpha02/META-INF/com/android/build/gradle/aar-metadata.properties.\n
Run Code Online (Sandbox Code Playgroud)\n

我\xe2\x80\x99尝试过什么:

\n
    \n
  1. 使缓存无效并重新启动
  2. \n
  3. 重新下载项目并再次添加到studio
  4. \n
\n

Android studio版,北极狐2020.3.1

\n

android android-studio

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