我需要并行运行 2 个协程并等待它们完成后再继续。下面的代码可以工作,但它使用的GlobalScope
不是最好的方法。
有没有更好的办法?
fun getInfo(onSuccess: () -> Unit, onError: () -> Unit) {
GlobalScope.launch(Dispatchers.IO) {
try {
coroutineScope {
launch { getOne() }
launch { getTwo() }
}
onSuccess.invoke()
} catch (e: Throwable) {
onError.invoke()
}
}
}
Run Code Online (Sandbox Code Playgroud) 我在 Android O 手机(各种三星版本)上使用 PIP 模式,效果很好。但是,如果我打开辅助功能模式,我会得到
java.lang.IllegalStateException·enterPictureInPictureMode: Device doesn't support picture-in-picture mode
Run Code Online (Sandbox Code Playgroud)
进入画中画模式时。在进入 PIP 之前,我会检查 PackageManager.FEATURE_PICTURE_IN_PICTURE 以及 AppOpsManager.OPSTR_PICTURE_IN_PICTURE 是否已启用(两者都返回 true)。消息“设备不支持画中画模式”显然具有误导性和错误,但在这种情况下有没有办法检查 PIP 是否可用?
请注意,这似乎是三星唯一的问题,因为我尝试了各种三星手机和平板电脑(S8、Note 8、Tab S3、Tab S4),但它们都崩溃了。Google Pixel 3 手机没有这个问题。
由于某些外部事件,我想刷新 Android 应用程序中的 DNS。我注意到 Android 系统代码使用如下内容:
final Intent intent = new Intent(Intent.ACTION_CLEAR_DNS_CACHE);
Run Code Online (Sandbox Code Playgroud)
清除 DNS 缓存,但它似乎在用户代码中不可用。还有其他选择吗?谢谢。
我在Android Studio的androidTest目录中有一些Espresso测试。当我将光标移到绿色三角形(请参见下文)上以运行测试时,Studio会显示“运行测试”而不是“运行verifySomething”,然后继续以单元测试而不是Espresso测试的形式运行测试。在我从Studio 3.4升级到3.5之前,这种方法一直很好,尽管我无法确定这是根本原因。如果我去跑步| 编辑配置我可以看到Studio在左侧面板中添加了一个新条目“ Android JUnit”,而不是“ Android Instrumented Test”。如果我手动创建“ Android Instrumented Test”配置并手动添加“ verifySomething”方法,并且从Studio的顶层菜单栏配置下拉菜单中选择它,则可以将其作为Instrumented测试运行。
run-configuration android-studio android-espresso android-instrumentation
我需要在 Android 手机上模拟 Espresso 中的主页按钮点击。我试过
onView(withId(android.R.id.home)).perform(click());
和 onView(withContentDescription("Navigate up")).perform(click());
正如一些帖子所建议的那样,但它总是无法找到视图。我是 Espresso 的新手,不知道如何调试它。谢谢。