Qihoo360 / RePlugin

RePlugin - A flexible, stable, easy-to-use Android Plug-in Framework
Apache License 2.0
7.27k stars 1.53k forks source link

插件使用LiveData监听数据,无法收到回调 #722

Open hewuzhao opened 5 years ago

hewuzhao commented 5 years ago

问题详细描述 Detailed description of the problem

复现问题步骤 Steps to reproduce the problem

其它重要信息 Other important information

replugin-host-lib/gradle Version: rePlugin-plugin-lib/gradle Version:

Android API Version: Android 手机型号&ROM(Phone model & ROM):

Logcat上下文 Logcat context

wavaya commented 5 years ago

可以用observerForver试下

hewuzhao commented 5 years ago

可以用observerForver试下

使用observerForver意义就不大了,这个需要手动移除的。

JovaMiner commented 5 years ago

我也使用了LiveData,没发现这个问题

wavaya commented 5 years ago

插件中的Activity或Fragment没有设置observer状态,可以手动添加

JasonKing0329 commented 5 years ago

请问你们使用LiveData是配合的AndroidViewModel使用的吗? 或者有试过在Fragment中使用,然后由宿主使用插件的Fragment吗? 会出现这样的错误 java.lang.LinkageError: Class android.arch.lifecycle.HolderFragment method android.arch.lifecycle.ViewModelStore android.arch.lifecycle.HolderFragment.getViewModelStore() resolves differently in superclass android.support.v4.app.Fragment: Return types mismatch: java.lang.Class<android.arch.lifecycle.ViewModelStore,com.qihoo360.replugin.PluginDexClassLoader>(0x131eff00) vs java.lang.Class<android.arch.lifecycle.ViewModelStore,dalvik.system.PathClassLoader>(0x12e45600) (declaration of 'android.arch.lifecycle.HolderFragment' appears in /data/user/0/com.tcsl.caidan.host/app_p_a/-1958850779.jar) 我知道是因为compileOnly的方式让插件用了宿主的Fragment类型,而插件的LifeCycle层因此也解析到了宿主的Fragment类型 这个该怎么解决呢?

Tan-Tshunglee commented 5 years ago

插件中的Activity或Fragment没有设置observer状态,可以手动添加

麻烦请教一下,具体点是什么方法呢?

hewuzhao commented 5 years ago

该问题官方一直没解决啊。 目前解决方案是参考:https://github.com/Qihoo360/RePlugin/issues/610 在onStart中调用:getLifecycle().handleLifecycleEvent(Lifecycle.Event.ON_START);