如何使用Xamarin.Forms重新启动应用程序

gcuhipw9  于 2023-05-11  发布在  其他
关注(0)|答案(5)|浏览(278)

如果我在我的应用程序中管理会话(任何会话的概念都是合适的),并且我认为会话已过期,无论出于何种原因,我如何以编程方式重新启动应用程序,适用于iOS,Android,WinPhone?

kqlmhetl

kqlmhetl1#

你不能明确地重新启动应用程序- iOS特别禁止这样做,并且在其他平台上没有通用的机制来执行此操作。如果您确定会话已过期,则需要提示用户登录,并手动执行任何初始化。

bvhaajcl

bvhaajcl2#

您可以创建MainPage的新示例

(Application.Current).MainPage = new NavigationPage(new MainPage());
gpfsuwkq

gpfsuwkq3#

MainPage的新示例
从任何地方打电话。如果只是从异步创建将无法工作

void Reset()//require in the main Thread, also the app will crash
{
    (App.Current as App).MainPage.Dispatcher.Dispatch(() =>
    {
        (App.Current as App).MainPage = new AppShell();
    });
}
q9yhzks0

q9yhzks04#

不管它值多少钱;我正在使用Blazor Xamarin设置(混合应用程序,我认为它现在是.Net MAUI),这就是我正在做的重新加载桌面应用程序,基于本文中的其他答案和建议。

App.cs

public class App : Xamarin.Forms.Application
{
    private static IHost _host;

    public App()
    {
        // ... hostBuilder stuff. Configure services, etc.

        _host = hostBuilder.Build();

        Reload();
    }

    public static void Reload()
    {
        Current.MainPage = new ContentPage();
        NavigationPage.SetHasNavigationBar(Current.MainPage, false);
        _host.AddComponent<Main>(parent: Current.MainPage);
    }
}

剃须刀应用

我把这个放在主应用程序中。剃刀使用按钮调用。这个想法是,如果有一个错误冒泡到顶部,需要重新加载应用程序,使用它。

@* Show button if there is an error *@
<button class="btn btn-sm btn-danger" @onclick="Reload">Reload</button>

@code {
    void Reload()
    {
        Application.Current.MainPage.Dispatcher.BeginInvokeOnMainThread(() => 
        {
            MyHybridApplication.App.Reload();
        });
    }
}
yjghlzjz

yjghlzjz5#

您无法重新启动maui应用程序,但可以
1.设置新的区域性信息等
1.重新初始化所需的服务
1.设置新创建的MainPage,使用新上下文

相关问题