Application.OnCreate 被覆盖后启动画面消失
Splash Screen disappeared after Application.OnCreate was overridden
初刊
我需要按照此处 在我的 Application.OnCreate
方法中的描述注册 ProcessLifecycleOwner
。
但是 MvvmCross
的 6.2.2
版本出现了错误:
MvvmCross.Exceptions.MvxIoCResolveException
: Failed to resolve type MvvmCross.ViewModels.IMvxAppStart
occurred
或者只是停留在 Splash Screen
和 6.2.3
。
修复
这些问题已根据 的建议解决。
[Application]
public class App : MvxAndroidApplication<Setup, Core.App>
{
public App(IntPtr reference, JniHandleOwnership transfer) :
base(reference, transfer) { }
public override void OnCreate()
{
MvxAndroidSetupSingleton
.EnsureSingletonAvailable(ApplicationContext)
.EnsureInitialized();
base.OnCreate();
}
}
当前问题
然而Splash Screen
也消失了,只剩下default theme
的蓝色背景。
我找到的解决方法:
public override void OnCreate()
{
Task.Run(() => MvxAndroidSetupSingleton
.EnsureSingletonAvailable(ApplicationContext)
.EnsureInitialized());
base.OnCreate();
}
但由于并行性,它不可靠,有时有效,有时崩溃。
问题
如何恢复Splash Screen
?
您的方法很可能在 UI 线程上阻塞,我们导致 UI 在预期启动画面显示期间阻塞。
尝试使用异步事件处理程序以允许非阻塞 UI 调用
[Application]
public class App : MvxAndroidApplication<Setup, Core.App> {
public App(IntPtr reference, JniHandleOwnership transfer) :
base(reference, transfer) {
EnsureInitialized = onEnsureInitialized; //Subscribe to event
}
private event EventHandler EnsureInitialized = delegate { };
private async void onEnsureInitialized(object sender, EventArgs args) {
await Task.Run(() => MvxAndroidSetupSingleton.EnsureSingletonAvailable(ApplicationContext)
.EnsureInitialized());
}
public override void OnCreate() {
EnsureInitialized(this, EventArgs.Empty); //Raise event
base.OnCreate();
}
}
初刊
我需要按照此处 Application.OnCreate
方法中的描述注册 ProcessLifecycleOwner
。
但是 MvvmCross
的 6.2.2
版本出现了错误:
MvvmCross.Exceptions.MvxIoCResolveException
: Failed to resolve typeMvvmCross.ViewModels.IMvxAppStart
occurred
或者只是停留在 Splash Screen
和 6.2.3
。
修复
这些问题已根据
[Application]
public class App : MvxAndroidApplication<Setup, Core.App>
{
public App(IntPtr reference, JniHandleOwnership transfer) :
base(reference, transfer) { }
public override void OnCreate()
{
MvxAndroidSetupSingleton
.EnsureSingletonAvailable(ApplicationContext)
.EnsureInitialized();
base.OnCreate();
}
}
当前问题
然而Splash Screen
也消失了,只剩下default theme
的蓝色背景。
我找到的解决方法:
public override void OnCreate()
{
Task.Run(() => MvxAndroidSetupSingleton
.EnsureSingletonAvailable(ApplicationContext)
.EnsureInitialized());
base.OnCreate();
}
但由于并行性,它不可靠,有时有效,有时崩溃。
问题
如何恢复Splash Screen
?
您的方法很可能在 UI 线程上阻塞,我们导致 UI 在预期启动画面显示期间阻塞。
尝试使用异步事件处理程序以允许非阻塞 UI 调用
[Application]
public class App : MvxAndroidApplication<Setup, Core.App> {
public App(IntPtr reference, JniHandleOwnership transfer) :
base(reference, transfer) {
EnsureInitialized = onEnsureInitialized; //Subscribe to event
}
private event EventHandler EnsureInitialized = delegate { };
private async void onEnsureInitialized(object sender, EventArgs args) {
await Task.Run(() => MvxAndroidSetupSingleton.EnsureSingletonAvailable(ApplicationContext)
.EnsureInitialized());
}
public override void OnCreate() {
EnsureInitialized(this, EventArgs.Empty); //Raise event
base.OnCreate();
}
}