我目前正在尝试将 Google Cast sdk 添加到纯 Compose 应用程序中。
我用各种方法遇到了几个问题。我想知道是否有其他人实现了这一目标,如果是的话,他们采取了什么方法?
我尝试在活动级别添加强制转换实现,并使用流和回调与可组合项进行通信。通过此实现,我坚持能够将迷你控制器添加到活动(单个活动应用程序),因为它是一个撰写活动。
我尝试使用 AndroidViewBinding 可组合项以推荐的组合方式添加迷你控制器片段,但使用推荐的方法它不会膨胀。
我什至尝试覆盖 AndroidViewBinding 可组合项并手动膨胀,这在一定程度上有效,但随后我遇到了内存泄漏问题。
我知道这是一个非常广泛的问题,所以我只是在寻找一些总体方向,如果有人成功地做到了这一点,我很高兴详细说明我迄今为止所尝试的内容。
我正在尝试为包含 WorkManager WorkRequests 的类编写 Android 检测测试。
很长一段时间,我都被困在我可以看到工人排队但他们从未被处决的地步。经过一段时间的反复试验,我意识到以下约束阻止了测试:
...
setConstraints(Constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED).build())
...
Run Code Online (Sandbox Code Playgroud)
如果我删除该约束,工作项将按预期执行。
我的虚拟设备有网络连接,所以不确定为什么我的测试没有满足这个限制。
有没有人对如何解决这个问题有任何建议,因为我需要编写测试来涵盖满足和不满足此约束的情况。
我的工作要求非常简单,但它是:
val workRequest = OneTimeWorkRequestBuilder<T>()
.addTag(syncWork.getSyncType().name)
.setConstraints(Constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED).build())
.build()
syncWorkRepository.save(syncWork.apply { id = workRequest.id.toString() })
workManager.enqueue(workRequest)
Run Code Online (Sandbox Code Playgroud)
我试过了:
val wifi = context.getSystemService(Context.WIFI_SERVICE) as WifiManager
wifi.isWifiEnabled = true
Run Code Online (Sandbox Code Playgroud)
但这会引发安全异常:
SecurityException: WifiService: Neither user 10139 nor current process has android.permission.CHANGE_WIFI_STATE.
Run Code Online (Sandbox Code Playgroud)
我还在测试中添加了代码来检查网络状态:
val cm = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val activeNetwork: NetworkInfo? = cm.activeNetworkInfo
val isConnected: Boolean = activeNetwork?.isConnected == true
Run Code Online (Sandbox Code Playgroud)
并且 isConnected 为真但仍然不满足 WorkManager 约束,因此不执行工作。
还试过:
val testDriver = getTestDriver()
Run Code Online (Sandbox Code Playgroud)
和
testDriver?.setAllConstraintsMet(workInfo.id) …Run Code Online (Sandbox Code Playgroud) android android-testing android-instrumentation android-workmanager
我可以像在Github上那样以某种方式为发布请求请求提交启用BitBucket请求请求描述的自动更新吗?
场景:
我完成了一些工作,最后一次提交。
我使用BitBucket Web创建一个拉取请求。
我意识到我需要再次提交。
该提交的代码已按预期添加到请求请求中。
提交消息不会添加到拉取请求描述中,因此审阅者没有上下文或所添加代码的可见性。他们甚至可能已经进行了部分审查,并可能错过了这些新更改。
有没有办法像GitHub一样将提交消息自动添加到拉取请求描述中?
谢谢,
保罗。
我正在尝试将Realm与包括LiveData在内的Android体系结构组件一起使用。
我一直在关注Google的《应用程序体系结构指南》:
https://developer.android.com/topic/libraries/architecture/guide.html
用空间代替房间。
我正在使用的一切:
LiveData<RealmResults<CustomModelObject>>
Run Code Online (Sandbox Code Playgroud)
从我的存储库层,一直到ViewModel到View。
我想这可能是更好的只有有更多的泛型类型来从仓库回来,LiveData<List<CustomModelObject>>而不是LiveData<RealmResults<CustomModelObject>>。
这是我遇到问题的代码段:
@NonNull
@Override
protected LiveData<List<CustomModelObject>> loadFromDb() {
return Transformations.switchMap(customModelObjectsDao.getCustomModelObjects(),
new Function<RealmResults<CustomModelObject>, LiveData<List<CustomModelObject>>>() {
@Override
public LiveData<List<CustomModelObject>> apply(RealmResults<CustomModelObject> data) {
if (data == null) {
return AbsentLiveData.create();
} else {
return customModelObjectsDao.getCustomModelObjects();
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
customModelObjectsDao.getCustomModelObjects()目前返回LiveData<RealmResults<Inspiration>>。
我想将其转换为LiveData<List<Inspiration>>。
我尝试过各种方法Transformations.map,但都Transformations.switchMap没有成功,我想我已经盯着它太久了:)
我在正确的道路上还是缺少明显的东西?
任何帮助是极大的赞赏。
谢谢,保罗。
更新
道:
public RealmLiveData<CustomModelObject> getCustomModelObjects() {
return asLiveData(realm.where(CustomModelObject.class).findAllAsync());
}
Run Code Online (Sandbox Code Playgroud)
asLiveData Impl:
fun <T: RealmModel> RealmResults<T>.asLiveData() = RealmLiveData<T>(this)
fun …Run Code Online (Sandbox Code Playgroud) 是否可以在 Android 库模块中使用 Firebase 远程配置,并且仍然允许库使用者通过自己的帐户使用 Firebase 远程配置?
我创建了一个 Android 库,它使用 Firebase 远程配置从我的 Firebase 控制台帐户更新库配置。
在我引用库的参考/测试应用程序中,我的 google-services.json 位于应用程序目录中。一切正常。
我刚刚意识到,一旦我将我的库作为 aar 提供给其他人,他们可能会拥有自己的 google-services.json 并直接在他们自己的应用程序中使用 Firebase。
我已经搜索过谷歌,但我发现很难找出这是否可能?有没有人有过这种设置的经验或知道它应该如何工作?我唯一能想到的就是将我的 google-services.json 移动到库中,但我无法让它工作。
在此先感谢您的帮助!
我正在尝试确定创建应用程序启动屏幕的最佳方法,同时考虑到Google在可能的情况下选择单个Activity应用程序的最新建议。
看这里:
和这里:
“今天,我们将导航组件作为构建应用内UI的框架引入,重点是使单活动应用成为首选架构。”
我发现的任何好的启动画面方法都有一个专门的启动画面活动:
其他人是否有在单个Activity应用程序中创建启动屏幕的经验?单个“活动”建议是否包含启动屏幕,或者是特殊情况?有人对此有任何好的例子或建议吗?
干杯,保罗。