簡體   English   中英

如何在android上制作服務的監聽器

[英]How to make a listener of a service on android

我有這個代碼來檢查服務是否處於活動狀態,但我想知道是否有任何方法可以讓 EditText 顯示服務的狀態,而無需每秒進行此查詢,或在單獨的線程中,或鏈接它某種程度上來說? 可以檢測服務是否停止

private bool MiServicioEstaCorriendo(Class @class, Context contexto)
        {
            ActivityManager manager = (ActivityManager)contexto.GetSystemService(Context.ActivityService);
            foreach (ActivityManager.RunningServiceInfo service in manager.GetRunningServices(Integer.MaxValue))
            {
                if (@class.Name.Equals(service.Service.ClassName))
                {
                    Log.Info(typeof(BroadcastGps).Name, "MiServcicioEstaCorriendo: true");
                    return true;
                }
            }
            Log.Info(typeof(BroadcastGps).Name, "MiServcicioEstaCorriendo: false");
            return false;
        }

您基本上需要一種在應用程序中的類之間傳遞事件/消息的方法。 所以這個問題可能歸結為這種模式的 Android & C# 實現。 Xamarin.Forms 有一個MessagingCenter類,但由於您使用的是 Xamarin.Native,您必須自己創建一些東西

實際上,Android 或 C# 中沒有任何東西,但是您可以實現一種最常見的方法,讓類使用“偵聽器”(Android 中使用的術語)或“ 委托”(Android 中使用的術語)來傳播事件/消息C#) 技術。

也有像PubNub這樣的框架,您可以將它們用作 Nuget 包,為您簡化一切。

了解這個概念的更多資源: WikipediaIBM 以及一些 Android 資源: HandlersAsyncTasksParcelables

不要忘記更新 EditText 的事件可能不會在 Main UIThread 上觸發,因此除非您強制該更新行在 UI Thread 上運行,否則您將無法看到更改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM