簡體   English   中英

如何從服務 Android 中的 viewModel 調用方法?

[英]How to call method from viewModel in service Android?

我有服務

class BubbleButtonService : Service(), View.OnTouchListener, View.OnClickListener

在該服務中,我得到了一個方法,我想從 viewModel 調用一個方法。 我試圖通過構造函數傳遞 viewModel 但它不起作用 Manifest 沒有看到此服務並給出錯誤

This class should provide a default constructor (a public constructor with no arguments)

那么如何從視圖 model 或更新視圖 model 實時數據的服務調用方法中執行該方法?

ViewModel 在有人實例化它之后存在,它通常是從 Activity 或 Fragment 完成的。 如果您的方法(在 ViewModel 的類文件中)是 STATIC 方法,那么您可以將其聲明為“公共靜態”,並且它將在任何地方都可見。 如果它是一個類方法,那么你必須:

  1. 實例化它的 ViewModel
  2. 選擇服務將如何“到達”它:
    • (最壞的方法)將 ViewModel 實例保存在 static 變量中並從服務中使用它...
    • ...或將活動綁定到服務,將 ViewModel 作為參數/參數傳遞,將其保存在服務的變量中,最后在您的服務中使用它

但是,直接從服務調用 ViewModel 方法並不是一個好習慣(特別是如果它是 IntentService 或后台服務)。

暫無
暫無

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

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