来自 FirebaseMessagingService 的 Kotlin MainActivity WebView loadUrl

Kotlin MainActivity WebView loadUrl from FirebaseMessagingService

在我的 MainActivity 的 Kotlin 应用程序中,我有一个 WebView,我想在 FirebaseMessagingService 上调用 onNewToken 函数时加载 Url:

MainActivity.kt

class MainActivity : AppCompatActivity() {
        val myWebView = findViewById<WebView>(R.id.webView)
        myWebView.loadUrl("https://whosebug.com/")
}

MyFirebaseMessagingService.kt

class MyFirebaseMessagingService : FirebaseMessagingService() {
    override fun onNewToken(token: String) {
        super.onNewToken(token)
        Log.e("log", "new token: $token")
        getSharedPreferences("_", MODE_PRIVATE).edit().putString("fb", token).apply()
        //here I want to loadUrl
    }
}

我该怎么做?

创建一个单例 class,它将用作您的小型事件总线框架。此单例 class 可以包含您需要的 LiveData 列表,并且 ActivityService 都可以访问 LiveData 的实例。 ServiceActivity 可以充当生命周期所有者,因此您不会遇到任何问题。

object Events {
    val serviceEvent: MutableLiveData<String> by lazy {
        MutableLiveData<String>()
    }
}


class MyFirebaseMessagingService : FirebaseMessagingService() {
    override fun onNewToken(token: String) {
        super.onNewToken(token)
        Log.e("log", "new token: $token")
        getSharedPreferences("_", MODE_PRIVATE).edit().putString("fb", token).apply()
        //here I want to loadUrl
      Events.serviceEvent.postValue()// Here you can post value
    }


class MainActivity : AppCompatActivity() {
        val myWebView = findViewById<WebView>(R.id.webView)
        Events.serviceEvent.observe(this, Observer<T>{
          myWebView.loadUrl("https://whosebug.com/")
        }
        
}

引用自this答案