Max*_*Max 4 android android-jetpack-compose
我已将 compose 版本更新为 1.0.0-beta01,并在应用程序进入后台时遇到崩溃
java.lang.RuntimeException:Parcel:无法在 android.os.Parcel.writeValue(Parcel.java:1885) 和 android.os.Parcel.writeList(Parcel.java:1092) 处封送值 androidx.compose.runtime.SnapshotMutableStateImpl@efa375c )在 android.os.Parcel.writeValue(Parcel.java:1832) 在 android.os.Parcel.writeMapInternal(Parcel.java:943) 在 android.os.Parcel.writeMap(Parcel.java:925) 在 android.os .Parcel.writeValue(Parcel.java:1797) 在 android.os.Parcel.writeMapInternal(Parcel.java:943) 在 android.os.Parcel.writeMap(Parcel.java:925) 在 android.os.Parcel.writeValue( Parcel.java:1797) 在 android.os.Parcel.writeList(Parcel.java:1092) 在 android.os.Parcel.writeValue(Parcel.java:1832) 在 android.os.Parcel.writeArrayMapInternal(Parcel.java:975) )在 android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1620) 在 android.os.Bundle.writeToParcel(Bundle.java:1303) 在 android.os.Parcel.writeBundle(Parcel.java:1044) 在 android.os .Parcel.writeValue(Parcel.java:1801) 在 android.os.Parcel.writeArrayMapInternal(Parcel.java:975) 在 android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1620) 在 android.os.Bundle.writeToParcel( Bundle.java:1303) 在 android.os.Parcel.writeBundle(Parcel.java:1044) 在 android.os.Parcel.writeValue(Parcel.java:1801) 在 android.os.Parcel.writeArrayMapInternal(Parcel.java:975) )在 android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1620) 在 android.os.Bundle.writeToParcel(Bundle.java:1303) 在 android.app.IActivityTaskManager$Stub$Proxy.activityStopped(IActivityTaskManager.java:4389)在 android.app.servertransaction.PendingTransactionActions$StopInfo.run(PendingTransactionActions.java:145) 在 android.os.Handler.handleCallback(Handler.java:938) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在android.os.Looper.loop(Looper.java:223) 在 android.app.ActivityThread.main(ActivityThread.java:7656) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android.internal。 os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
var email by rememberSaveable { mutableStateOf("") }
Run Code Online (Sandbox Code Playgroud)
如果我只是将 RememberSaveable() 更改为 Remember() ,一切都会正常运行。
这是一个错误,其修复将在 beta02 中发布:https ://issuetracker.google.com/issues/180042685
那里提到了一个临时解决方法,您可以这样做:
var email by rememberSaveable(saver = stateSaver()) { mutableStateOf("") }
Run Code Online (Sandbox Code Playgroud)
其中stateSaver()定义为:
fun <T> stateSaver() = Saver<MutableState<T>, Any>(
save = { state -> state.value ?: "null" },
restore = { value ->
@Suppress("UNCHECKED_CAST")
mutableStateOf((if (value == "null") null else value) as T)
}
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6642 次 |
| 最近记录: |