2017-12-22 8 views
1

저는 앱을 개발 중이며 앱이 중단 된 시간, 종료 된 시간, 종료 된 시간 등을 알아야합니다. WebSocket으로. 어떻게 이러한 이벤트에 '액세스'할 수 있습니까?Xamarin.Forms - OnStop(), OnExit(), OnClose()

감사합니다.

답변

2

다음은 작은 예제로 다음을 테스트했습니다. (UWP에서 테스트하고 작동하면 OnSleep()이 응용 프로그램을 닫을 때이 호출됩니다.) OnSleep() App.xaml.cs에서 재정의 할 수있는 메서드가 찾고있는 메서드입니다.

Xamarin Application LifeCycle은 사용자가 필요로하는 몇 가지 방법을 제공합니다.

OnStart - Called when the application starts. 

OnSleep - Called each time the application goes to the background. 

OnResume - Called when the application is resumed, after being sent to the background. 

참고 해당 응용 프로그램 종료에 대한 방법이 없습니다. 보통 상황 (즉, 충돌이 아님)에서 코드에 대한 추가 알림없이 OnSleep 상태에서 응용 프로그램 종료가 발생합니다.

예 :

using System; 
using System.Diagnostics; 
using Xamarin.Forms; 

namespace App1 
{ 
    public partial class App : Application 
    { 
     public App() 
     { 
      InitializeComponent(); 

      if (Device.RuntimePlatform == Device.iOS) 
       MainPage = new MainPage(); 
      else 
       MainPage = new NavigationPage(new MainPage()); 
     } 

     protected override void OnStart() { 
      Debug.WriteLine("OnStart"); 
     } 
     protected override void OnSleep() { 
      Debug.WriteLine("OnSleep"); 
     } 
     protected override void OnResume() { 
      Debug.WriteLine("OnResume"); 
     } 
    } 
} 

업데이트 네이티브 코드에서 처리되지 않은 예외를 잡을 필요가 this에 따르면

. 이로 인해 서비스가 종료되는 데 어려움이 있습니다.

예 : 처리되지 않은 예외에

public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity { 
     protected override void OnCreate(Bundle bundle) { 
      TabLayoutResource = Resource.Layout.Tabbar; 
      ToolbarResource = Resource.Layout.Toolbar; 
      AppDomain.CurrentDomain.UnhandledException += CurrentDomainOnUnhandledException; 
      base.OnCreate(bundle); 

      global::Xamarin.Forms.Forms.Init(this, bundle); 

      LoadApplication(new App()); 
     } 

     private void CurrentDomainOnUnhandledException(object sender, UnhandledExceptionEventArgs unhandledExceptionEventArgs) { 
      //crashed by exception 
     } 
    } 

더 읽을 거리 : here

+0

내가 응용 프로그램 충돌 또는 사각 VS2017'정지 debugging'을 클릭하면 처리 어떻게 그것이 그러나 :) 작동했습니다. 답변 주셔서 감사합니다 :) – Emixam23

+0

처리되지 않은 예외에 대한 이벤트가 추가되었습니다. –

+0

다른 이벤트 처리기 추가 - 발생할 수있는 거의 모든 종료/크래시를 잡을만큼 충분해야 함 –