public override void OnCreate() { DefaultNightMode = QApis.AreAvailable ? ModeNightFollowSystem : ModeNightAuto; base.OnCreate(); ProcessLifecycleOwner.Get().Lifecycle.AddObserver(this); #if !DEBUG Firebase.FirebaseApp.InitializeApp(this); #endif AndroidDependencyContainer.EnsureInitialized(Context); var app = new AppStart(AndroidDependencyContainer.Instance); app.LoadLocalizationConfiguration(); var accessLevel = app.GetAccessLevel(); app.SetupBackgroundSync(); app.SetFirstOpened(); if (accessLevel == AccessLevel.TokenRevoked || accessLevel == AccessLevel.LoggedIn) { AndroidDependencyContainer.Instance .UserAccessManager .LoginWithSavedCredentials(); } var accessibilityManager = GetSystemService(AccessibilityService) as AccessibilityManager; if (accessibilityManager != null) { var accessibilityEnabled = accessibilityManager.IsTouchExplorationEnabled; AndroidDependencyContainer.Instance.AnalyticsService.AccessibilityEnabled.Track(accessibilityEnabled); } #if USE_APPCENTER Microsoft.AppCenter.AppCenter.Start( "{TOGGL_APP_CENTER_ID_DROID}", typeof(Microsoft.AppCenter.Crashes.Crashes), typeof(Microsoft.AppCenter.Analytics.Analytics)); #endif #if DEBUG // Add or remove `Detect*` chains to detect unwanted behaviour // Change the `Penalty*` to change how the StrictMode works, allowing it to crash the app if necessary // Try not to misinterpret the logs/penalties; You should only be looking for behaviour that shouldn't // be happening Android.OS.StrictMode.SetVmPolicy( new Android.OS.StrictMode.VmPolicy.Builder() .DetectActivityLeaks() .DetectLeakedClosableObjects() .DetectLeakedRegistrationObjects() .DetectLeakedSqlLiteObjects() .PenaltyLog() .Build()); Android.OS.StrictMode.SetThreadPolicy( new Android.OS.StrictMode.ThreadPolicy.Builder() .DetectCustomSlowCalls() .PenaltyLog() .Build()); #endif }
public static void EnsureInitialized(ApiEnvironment environment, Platform platform, string version) { if (Instance != null) { return; } Instance = new AndroidDependencyContainer(environment, platform, version); UIDependencyContainer.Instance = Instance; }
private void handleDeepLink(Uri uri, AndroidDependencyContainer dependencyContainer) { var timeService = dependencyContainer.TimeService; var interactorFactory = dependencyContainer.InteractorFactory; var urlParser = dependencyContainer.DeeplinkParser; var parameters = urlParser.Parse(uri); parameters.Match( te => runAndStartRootActivity(() => te.Start(interactorFactory, timeService)), te => runAndStartRootActivity(() => te.Continue(interactorFactory)), te => runAndStartRootActivity(() => te.Stop(interactorFactory, timeService)), te => runAndStartRootActivity(() => te.Create(interactorFactory)), te => runAndStartRootActivity(() => te.Update(interactorFactory, timeService)), showNewTimeEntry, showEditTimeEntry, showReports, showCalendar, _ => startRootActivityAndFinish()); }