我已经给了我几天的时间来解决这个问题。我的应用程序崩溃,其 android 版本为 8.1。它在 Android 8.0 版中运行良好。
我按照下面提到的解决方案链接并尝试了此链接中给出的许多解决方案,但我的应用程序没有打开。
升级到 Android 8.1 后 startForeground 失败
我在 FirebaseMessageService 类中检查了 Android 版本并为 Oreo 版本创建了频道,但每次都显示以下给定的错误
android.app.RemoteServiceException: Bad notification for startForeground: java.lang.RuntimeException: invalid channel for service notification: Notification(channel=null pri=0 contentView=null vibrate=null sound=null defaults=0x0 flags=0x40 color=0x00000000 vis=PRIVATE)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1795)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:171)
at android.app.ActivityThread.main(ActivityThread.java:6649)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:824)
Run Code Online (Sandbox Code Playgroud)
下面是我的代码。请帮我解决这个问题
public class MyFirebaseMessagingService extends FirebaseMessagingService
{
private NotificationManager notifManager;
Context mContext;
Random random = new Random();
int m = random.nextInt(9999 - 1000) + …Run Code Online (Sandbox Code Playgroud) 我查找了很多文章,试图了解使用 MVVM 架构时 Live Data 是如何观察变化的。
我有一个 Fragment A、ViewModel 和 Repository 类。onCreateView()ViewModel 在片段的方法中启动。onCreateView()在fragment方法中紧接着启动API调用。来自服务器的数据是通过片段的方法观察的。onViewCreated
首先,它运行得非常好。但是当我从另一个片段 B 更新用户名并返回片段 A 时。
Fragment A 的方法中再次调用 ApionResume()来更新 UI。但这里我的实时数据不再被观察到,UI 也没有更新
我不明白我做错了什么?为什么观察者不触发第二次?
下面是代码
class FragmentA : Fragment(){
private lateinit var dealerHomeViewModel: DealerHomeViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view = inflater.inflate(R.layout.fragment_home_dealers, container, false)
val dealerHomeFactory = DealerHomeFactory(token!!)
dealerHomeViewModel = ViewModelProvider(this,dealerHomeFactory).get(DealerHomeViewModel::class.java)
dealerHomeViewModel.getDealerHomeData()
return view
}
override fun …Run Code Online (Sandbox Code Playgroud)