来自 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
列表,并且 Activity
和 Service
都可以访问 LiveData
的实例。 Service
和 Activity
可以充当生命周期所有者,因此您不会遇到任何问题。
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答案
在我的 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
列表,并且 Activity
和 Service
都可以访问 LiveData
的实例。 Service
和 Activity
可以充当生命周期所有者,因此您不会遇到任何问题。
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答案