如果我在我的应用程序中管理会话(任何会话的概念都是合适的),并且我认为会话已过期,无论出于何种原因,我如何以编程方式重新启动应用程序,适用于iOS,Android,WinPhone?
kqlmhetl1#
你不能明确地重新启动应用程序- iOS特别禁止这样做,并且在其他平台上没有通用的机制来执行此操作。如果您确定会话已过期,则需要提示用户登录,并手动执行任何初始化。
bvhaajcl2#
您可以创建MainPage的新示例
(Application.Current).MainPage = new NavigationPage(new MainPage());
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(); }); }
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(); }); } }
yjghlzjz5#
您无法重新启动maui应用程序,但可以1.设置新的区域性信息等1.重新初始化所需的服务1.设置新创建的MainPage,使用新上下文
5条答案
按热度按时间kqlmhetl1#
你不能明确地重新启动应用程序- iOS特别禁止这样做,并且在其他平台上没有通用的机制来执行此操作。如果您确定会话已过期,则需要提示用户登录,并手动执行任何初始化。
bvhaajcl2#
您可以创建MainPage的新示例
gpfsuwkq3#
MainPage的新示例
从任何地方打电话。如果只是从异步创建将无法工作
q9yhzks04#
不管它值多少钱;我正在使用Blazor Xamarin设置(混合应用程序,我认为它现在是.Net MAUI),这就是我正在做的重新加载桌面应用程序,基于本文中的其他答案和建议。
App.cs
剃须刀应用
我把这个放在主应用程序中。剃刀使用按钮调用。这个想法是,如果有一个错误冒泡到顶部,需要重新加载应用程序,使用它。
yjghlzjz5#
您无法重新启动maui应用程序,但可以
1.设置新的区域性信息等
1.重新初始化所需的服务
1.设置新创建的MainPage,使用新上下文