Xamarin.Forms Třída aplikace
Základní Application
třída nabízí následující funkce, které jsou vystaveny ve vašich projektech výchozí App
podtřídy:
- Vlastnost
MainPage
, která je místem, kde nastavit počáteční stránku aplikace. - Trvalý
Properties
slovník pro ukládání jednoduchých hodnot napříč změnami stavu životního cyklu. - Statická
Current
vlastnost, která obsahuje odkaz na aktuální objekt aplikace.
Zveřejňuje také metody životního cyklu , jako OnStart
jsou , OnSleep
a OnResume
také modální navigační události.
V závislosti na zvolené App
šabloně je možné třídu definovat jedním ze dvou způsobů:
- C# nebo
- XAML & C #
Pokud chcete vytvořit třídu aplikace pomocí XAML, musí být výchozí třída aplikace nahrazena třídou aplikace XAML a přidruženým kódem, jak je znázorněno v následujícím příkladu kódu:
<Application xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="Photos.App">
</Application>
Následující příklad kódu ukazuje přidružený kód za:
public partial class App : Application
{
public App ()
{
InitializeComponent ();
MainPage = new HomePage ();
}
...
}
Stejně jako nastavení MainPage
vlastnosti musí kód zavolat také metodu InitializeComponent
pro načtení a parsování přidruženého XAML.
MainPage – vlastnost
Vlastnost MainPage
třídy Application
nastaví kořenovou stránku aplikace.
Můžete například vytvořit logiku ve třídě App
, která zobrazí jinou stránku v závislosti na tom, jestli je uživatel přihlášený nebo ne.
Vlastnost MainPage
by měla být nastavena v konstruktoru App
,
public class App : Xamarin.Forms.Application
{
public App ()
{
MainPage = new ContentPage { Title = "App Lifecycle Sample" }; // your page here
}
}
Slovník vlastností
Podtřída Application
má statický Properties
slovník, který lze použít k ukládání dat, zejména pro použití v OnStart
, OnSleep
a OnResume
metodách. K tomuto přístupu můžete přistupovat odkudkoli v Xamarin.Forms kódu pomocí Application.Current.Properties
.
Slovník Properties
používá string
klíč a ukládá object
hodnotu.
Můžete například nastavit trvalou "id"
vlastnost kdekoli v kódu (když je vybraná položka, v metodě stránky OnDisappearing
nebo v OnSleep
metodě), takto:
Application.Current.Properties ["id"] = someClass.ID;
V těchto OnStart
metodách OnResume
pak můžete tuto hodnotu použít k opětovnému vytvoření uživatelského prostředí nějakým způsobem. Slovník Properties
ukládá object
hodnoty tak, abyste před použitím museli přetypovat jeho hodnotu.
if (Application.Current.Properties.ContainsKey("id"))
{
var id = Application.Current.Properties ["id"] as int;
// do something with id
}
Před přístupem k klíči vždy zkontrolujte přítomnost klíče, abyste zabránili neočekávaným chybám.
Poznámka
Slovník Properties
může serializovat pouze primitivní typy úložiště. Pokus o uložení jiných typů (například List<string>
) může selhat bezobslužně.
Trvalosti
Slovník Properties
se automaticky uloží do zařízení.
Data přidaná do slovníku budou k dispozici, když se aplikace vrátí z pozadí nebo i po restartování.
Xamarin.Forms 1.4 zavedla další metodu třídy Application
– SavePropertiesAsync()
která se dá volat k proaktivnímu zachování slovníku Properties
. To vám umožní uložit vlastnosti po důležitých aktualizacích, nikoli riskovat, že se serializuje kvůli chybovému ukončení nebo zabití operačním systémem.
Odkazy na používání slovníku Properties
najdete v knizeVytváření mobilních aplikací Xamarin.Forms (viz kapitoly 6, 15 a 20) a v přidružených ukázkách.
Třída aplikace
Kompletní Application
implementace třídy je uvedena níže pro referenci:
public class App : Xamarin.Forms.Application
{
public App ()
{
MainPage = new ContentPage { Title = "App Lifecycle Sample" }; // your page here
}
protected override void OnStart()
{
// Handle when your app starts
Debug.WriteLine ("OnStart");
}
protected override void OnSleep()
{
// Handle when your app sleeps
Debug.WriteLine ("OnSleep");
}
protected override void OnResume()
{
// Handle when your app resumes
Debug.WriteLine ("OnResume");
}
}
Tato třída se pak vytvoří instance v každém projektu specifickém pro platformu a předána metodě LoadApplication
, která se MainPage
načte a zobrazí uživateli.
Kód pro každou platformu se zobrazí v následujících částech. Nejnovější Xamarin.Forms šablony řešení už obsahují veškerý tento kód předkonfigurovaný pro vaši aplikaci.
iOS projektu
Třída iOS AppDelegate
dědí z FormsApplicationDelegate
. Měla by:
Volání
LoadApplication
s instancíApp
třídyVždy vrátit
base.FinishedLaunching (app, options);
.
[Register ("AppDelegate")]
public partial class AppDelegate :
global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate // superclass new in 1.3
{
public override bool FinishedLaunching (UIApplication app, NSDictionary options)
{
global::Xamarin.Forms.Forms.Init ();
LoadApplication (new App ()); // method is new in 1.3
return base.FinishedLaunching (app, options);
}
}
projekt Android
Android MainActivity
dědí z FormsAppCompatActivity
. OnCreate
V přepsání je LoadApplication
volána metoda s instancí App
třídy.
[Activity (Label = "App Lifecycle Sample", Icon = "@drawable/icon", Theme = "@style/MainTheme", MainLauncher = true,
ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
public class MainActivity : FormsAppCompatActivity
{
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
global::Xamarin.Forms.Forms.Init (this, bundle);
LoadApplication (new App ()); // method is new in 1.3
}
}
Univerzální projekt Windows (UPW) pro Windows 10
Hlavní stránka projektu UPW by měla dědit z WindowsPage
:
<forms:WindowsPage
...
xmlns:forms="using:Xamarin.Forms.Platform.UWP"
...>
</forms:WindowsPage>
Kód jazyka C# za konstrukcí musí volat LoadApplication
, aby se vytvořila instance vaší Xamarin.FormsApp
. Mějte na paměti, že je vhodné explicitně použít obor názvů aplikace k získání kvalifikace App
, protože aplikace UPW mají také vlastní App
třídu nesouvisející s Xamarin.Forms.
public sealed partial class MainPage
{
public MainPage()
{
InitializeComponent();
LoadApplication(new YOUR_NAMESPACE.App());
}
}
Všimněte si, že Forms.Init()
je nutné volat z App.xaml.cs v projektu UPW.
Další informace najdete v tématu Nastavení Windows Projekty, které zahrnují kroky pro přidání projektu UPW do existujícího Xamarin.Forms řešení, které necílily UPW.