Xamarin 5.0 创建启动画面
Xamarin 5.0 Create Splash Screen
我已经创建了一个 Xamarin Forms 5.0 应用程序 (VS 2022)。我的项目由 Android 和 iOS 的主要应用程序和端口组成。我想添加执行以下操作的启动画面:
- 显示徽标
- 在后台创建表(如果它们不存在)
- 从外部提取数据 API 并加载表格。
- 完成第 2 步和第 3 步后,关闭初始屏幕并打开主应用程序(即在第 2 步和第 3 步完成之前不要让用户使用该应用程序。)
我编写了执行步骤 2 和 3 的代码,但它 运行 在显示的第一个视图中。我宁愿 运行 将这段代码放在启动画面中。有什么方法可以在主应用程序中构建启动画面,而不必将其添加到每个设备特定的应用程序(即 Android 和 iOS 应用程序)?
现在,我 运行 此代码在 App.xaml.cs OnStart 方法中。但是,这会导致屏幕一直保持空白,直到代码完成 运行ning,然后屏幕才会显示。这就是我的设置方式:
App.xaml.cs
public partial class App : Application
{
static Database database;
public IMyDataStore<MyViewPagesModel> _MyDataStore=> DependencyService.Get<IMyDataStore<MyViewPagesModel>>();
public static Database Database
{
get
{
if (database == null)
{
database = new Database(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "my_db.db3"));
}
return database;
}
}
public App()
{
InitializeComponent();
DependencyService.Register<MyDataStore>();
MainPage = new AppShell();
}
protected override void OnStart()
{
if(Database != null)
{
Database.CreateTables();
Task.Run(async () => await MyDataStore.PullDataFromAPI()).Wait();
}
}
}
MyDataStore.cs
public class MyDataStore: IMyDataStore<MyViewPagesModel>
{
static HttpClient client = new HttpClient();
readonly MyViewPagesModel _pages;
Database db;
private HttpClient httpClient;
public MyDataStore()
{
_pages = new MyViewPagesModel_pages();
db = App.Database;
httpClient = new HttpClient();
}
public async Task PullDataFromAPI(){
//do stuff
}
}
我正在尝试 运行,在启动时,
Database.CreateTables();
Task.Run(async () => await MyDataStore.PullDataFromAPI()).Wait();
但是,我不希望屏幕冻结。我希望它显示徽标并滚动一些加载文本,但不确定如何?这可以在启动画面中完成,还是我需要 运行 在不同的线程上使用这两种方法?
谢谢
目前无法在默认的 Xamarin Forms 启动画面期间运行后台进程。
相反,
- 创建一个
Content page
并添加 logo/animation.
- 在后台创建table,调用API,加载table。
- 完成所有操作后,导航到应用程序主页并将其设置为
Main page
。
Xamarin.Forms 在本机启动序列完成后在每个平台上初始化。 Xamarin.Forms 已初始化:
在 Android 上的 MainActivity class 的 OnCreate 方法中。
在 iOS 上的 AppDelegate class 的 FinishedLaunching 方法中。
在 UWP 上应用 class 的 OnLaunched 方法中。
所以,在上面的方法中添加你的逻辑代码。
仅供参考,应用程序启动时应尽快显示启动画面,但 Xamarin.Forms 直到启动序列的后期才初始化,这意味着启动画面必须在
所以,在上面的方法中添加你的逻辑代码。
有关 Xamarin.Android 上启动画面的详细信息,请参阅 Xamarin.Android splash screen.
有关 Xamarin.iOS 上的启动屏幕的详细信息,请参阅 Xamarin.iOS Launch Screen。
我已经创建了一个 Xamarin Forms 5.0 应用程序 (VS 2022)。我的项目由 Android 和 iOS 的主要应用程序和端口组成。我想添加执行以下操作的启动画面:
- 显示徽标
- 在后台创建表(如果它们不存在)
- 从外部提取数据 API 并加载表格。
- 完成第 2 步和第 3 步后,关闭初始屏幕并打开主应用程序(即在第 2 步和第 3 步完成之前不要让用户使用该应用程序。)
我编写了执行步骤 2 和 3 的代码,但它 运行 在显示的第一个视图中。我宁愿 运行 将这段代码放在启动画面中。有什么方法可以在主应用程序中构建启动画面,而不必将其添加到每个设备特定的应用程序(即 Android 和 iOS 应用程序)?
现在,我 运行 此代码在 App.xaml.cs OnStart 方法中。但是,这会导致屏幕一直保持空白,直到代码完成 运行ning,然后屏幕才会显示。这就是我的设置方式:
App.xaml.cs
public partial class App : Application
{
static Database database;
public IMyDataStore<MyViewPagesModel> _MyDataStore=> DependencyService.Get<IMyDataStore<MyViewPagesModel>>();
public static Database Database
{
get
{
if (database == null)
{
database = new Database(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "my_db.db3"));
}
return database;
}
}
public App()
{
InitializeComponent();
DependencyService.Register<MyDataStore>();
MainPage = new AppShell();
}
protected override void OnStart()
{
if(Database != null)
{
Database.CreateTables();
Task.Run(async () => await MyDataStore.PullDataFromAPI()).Wait();
}
}
}
MyDataStore.cs
public class MyDataStore: IMyDataStore<MyViewPagesModel>
{
static HttpClient client = new HttpClient();
readonly MyViewPagesModel _pages;
Database db;
private HttpClient httpClient;
public MyDataStore()
{
_pages = new MyViewPagesModel_pages();
db = App.Database;
httpClient = new HttpClient();
}
public async Task PullDataFromAPI(){
//do stuff
}
}
我正在尝试 运行,在启动时,
Database.CreateTables();
Task.Run(async () => await MyDataStore.PullDataFromAPI()).Wait();
但是,我不希望屏幕冻结。我希望它显示徽标并滚动一些加载文本,但不确定如何?这可以在启动画面中完成,还是我需要 运行 在不同的线程上使用这两种方法?
谢谢
目前无法在默认的 Xamarin Forms 启动画面期间运行后台进程。
相反,
- 创建一个
Content page
并添加 logo/animation. - 在后台创建table,调用API,加载table。
- 完成所有操作后,导航到应用程序主页并将其设置为
Main page
。
Xamarin.Forms 在本机启动序列完成后在每个平台上初始化。 Xamarin.Forms 已初始化:
在 Android 上的 MainActivity class 的 OnCreate 方法中。
在 iOS 上的 AppDelegate class 的 FinishedLaunching 方法中。
在 UWP 上应用 class 的 OnLaunched 方法中。
所以,在上面的方法中添加你的逻辑代码。 仅供参考,应用程序启动时应尽快显示启动画面,但 Xamarin.Forms 直到启动序列的后期才初始化,这意味着启动画面必须在 所以,在上面的方法中添加你的逻辑代码。
有关 Xamarin.Android 上启动画面的详细信息,请参阅 Xamarin.Android splash screen.
有关 Xamarin.iOS 上的启动屏幕的详细信息,请参阅 Xamarin.iOS Launch Screen。