我正在调查一个奇怪的问题,我们将 更改androidx.appcompat:appcompat为1.3.1,1.4.1突然我们的LifecycleObservers观察过程生命周期停止发出任何事件。
我也在使用"androidx.lifecycle:lifecycle-extensions:2.2.0",我知道这已经被弃用,但如果 appcompat 是,它可以完美地工作1.3.1
我已在清单中设置了正确的应用程序名称,我已根据文档的要求包含此提供程序。
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
tools:node="remove" />
Run Code Online (Sandbox Code Playgroud)
初始化的示例,不起作用。该对象被注入到Application类中,并且生命周期观察器被添加,但从onStart未被onStop调用。
class AppLifecycle @Inject constructor(
private val foregroundProxy: AppLifecycleProxy
) : LifecycleObserver {
init {
ProcessLifecycleOwner.get().lifecycle.addObserver(this)
}
@OnLifecycleEvent(Lifecycle.Event.ON_START)
fun onStart() {
foregroundProxy.onStarted()
}
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
fun onStop() {
foregroundProxy.onStopped()
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:根据 @EpicPandaForce 评论,将清单中的提供程序块更改为:
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities=\"${applicationId}.androidx-startup"
android:exported="false"
tools:node=\"merge">
<!-- If you are using androidx.startup to initialize other components -->
<meta-data
android:name="androidx.lifecycle.ProcessLifecycleInitializer"
android:value="androidx.startup" …Run Code Online (Sandbox Code Playgroud) android android-appcompat application-lifecycle android-lifecycle
在我的配备 One UI 5.0 和 Android 13 的三星 Galaxy S22+ 上,撰写 AlertDialog 始终占据全宽,在其他设备上它的工作方式与预期一致。
Compose版本是1.3.1
您只需从 Google Play 商店下载材料目录应用程序即可重现此内容。
我怀疑这很可能是 Compose 方面的一个错误,如果有快速修复,我将不胜感激。
@Composable
fun AlertDialogSample() {
val openDialog = remember { mutableStateOf(true) }
if (openDialog.value) {
AlertDialog(
onDismissRequest = {
// Dismiss the dialog when the user clicks outside the dialog or on the back
// button. If you want to disable that functionality, simply use an empty
// onCloseRequest.
openDialog.value = false
},
title = {
Text(text = "Title") …Run Code Online (Sandbox Code Playgroud) android ×2