Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

感觉会火,加油 #5

Open
mallxiaodoudou opened this issue Jan 23, 2021 · 19 comments
Open

感觉会火,加油 #5

mallxiaodoudou opened this issue Jan 23, 2021 · 19 comments

Comments

@mallxiaodoudou
Copy link

No description provided.

@mallxiaodoudou
Copy link
Author

准备用到项目中了 不知道会不会有性能问题

@vitaviva
Copy link
Owner

嗯,有问题咱们一起解决👊

@caojing35
Copy link

我们项目还没用Kotlin额,有没有考虑支持原生Java的基础上,用Kotlin包一层壳,核心还是用Java的?

我看代码里kotlin和Java混用的,有考虑拆分开吗?

@vitaviva
Copy link
Owner

kotlin是趋势,可以低成本地可以针对Java的使用体验做一些兼容,不会用Java进行大规模重构。

@ppg408331701
Copy link

很棒的思路,我被navigation搞得头发都掉了,尤其是现在NavGraph像蜘蛛网一样密密麻麻的。后悔用了navigation了

@vitaviva
Copy link
Owner

很棒的思路,我被navigation搞得头发都掉了,尤其是现在NavGraph像蜘蛛网一样密密麻麻的。后悔用了navigation了

🤝这也是写这个库的初衷

@mallxiaodoudou
Copy link
Author

但是也是有性能开销的 1.Activity销毁重建 内部的每一个Fragment都会resume 如果fragment太对会卡顿 2.Activity load root fragment之后 点击跳转到第二个fragment会有一点卡顿(第一次会卡顿),可能是第一次动态创建文件耗时了导致稍微的卡顿

@vitaviva
Copy link
Owner

1.Activity销毁重建 内部的每一个Fragment都会resume 如果fragment太对会卡顿

有人提过相同issue,后期优化

2.Activity load root fragment之后 点击跳转到第二个fragment会有一点卡顿(第一次会卡顿),可能是第一次动态创建文件耗时了导致稍微的卡顿

库本身应该没有耗时操作,trace看一下是不是业务层逻辑的问题?

@vitaviva
Copy link
Owner

@liukai2530533 恢复重建时的潜在性能问题已修复:#4

@mallxiaodoudou
Copy link
Author

升级库之后没有更改任何代码Activity中loadRoot出错
java.lang.RuntimeException: An exception happened in constructor of class com.github.fragivity.MyViewModel

@mallxiaodoudou
Copy link
Author

我目前只能升级到1.1.3版本。之后的版本就要报上面的错误了

@vitaviva
Copy link
Owner

vitaviva commented Feb 4, 2021

我目前只能升级到1.1.3版本。之后的版本就要报上面的错误了

麻烦把详细堆栈贴一下吧

@mallxiaodoudou
Copy link
Author

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.guadou.kt_demo/com.guadou.kt_demo.demo.demo11_fragment_navigation.Demo11Activity}: java.lang.RuntimeException: An exception happened in constructor of class com.github.fragivity.MyViewModel
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3773)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3952)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:91)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2386)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:213)
at android.app.ActivityThread.main(ActivityThread.java:8169)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1101)
Caused by: java.lang.RuntimeException: An exception happened in constructor of class com.github.fragivity.MyViewModel
at androidx.lifecycle.SavedStateViewModelFactory.create(SavedStateViewModelFactory.java:126)
at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.java:185)
at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.java:150)
at com.github.fragivity.FragivityUtil.loadRoot(Ext.kt:97)
at com.guadou.kt_demo.demo.demo11_fragment_navigation.Demo11Activity.init(Demo11Activity.kt:32)
at com.guadou.lib_baselib.base.activity.AbsActivity.onCreate(AbsActivity.kt:108)
at android.app.Activity.performCreate(Activity.java:8086)
at android.app.Activity.performCreate(Activity.java:8074)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1313)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3746)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3952) 
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:91) 
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149) 
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2386) 
at android.os.Handler.dispatchMessage(Handler.java:107) 
at android.os.Looper.loop(Looper.java:213) 
at android.app.ActivityThread.main(ActivityThread.java:8169) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1101) 
Caused by: java.lang.NoSuchMethodError: No virtual method setSavedStateProvider(Ljava/lang/String;Landroidx/savedstate/SavedStateRegistry$SavedStateProvider;)V in class Landroidx/lifecycle/SavedStateHandle; or its super classes (declaration of 'androidx.lifecycle.SavedStateHandle' appears in /data/app/com.guadou.kt_demo-eTQZfjBkcRgOq7DciVaGbg==/base.apk)
at com.github.fragivity.MyViewModel.(MyViewModel.kt:41)
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
at androidx.lifecycle.SavedStateViewModelFactory.create(SavedStateViewModelFactory.java:116)
at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.java:185) 
at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.java:150) 
at com.github.fragivity.FragivityUtil.loadRoot(Ext.kt:97) 
at com.guadou.kt_demo.demo.demo11_fragment_navigation.Demo11Activity.init(Demo11Activity.kt:32) 
at com.guadou.lib_baselib.base.activity.AbsActivity.onCreate(AbsActivity.kt:108) 
at android.app.Activity.performCreate(Activity.java:8086) 
at android.app.Activity.performCreate(Activity.java:8074) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1313) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3746) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3952) 
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:91) 
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149) 
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2386) 
at android.os.Handler.dispatchMessage(Handler.java:107) 
at android.os.Looper.loop(Looper.java:213) 
at android.app.ActivityThread.main(ActivityThread.java:8169) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1101) 

升级到0.1.4 或者0.1.5就会报错 0.1.3可以正常使用

@vitaviva
Copy link
Owner

vitaviva commented Feb 4, 2021

Caused by: java.lang.NoSuchMethodError: No virtual method setSavedStateProvider(Ljava/lang/String;Landroidx/savedstate/SavedStateRegistry$SavedStateProvider;)V in class Landroidx/lifecycle/SavedStateHandle; or its super classes (declaration of 'androidx.lifecycle.SavedStateHandle' appears in /data/app/com.guadou.kt_demo-eTQZfjBkcRgOq7DciVaGbg==/base.apk)

版本问题。

你在app的build.gradle添加下面代码,先临时解决一下吧,我在后面版本里处理一下。

configurations.all {
    resolutionStrategy {
        force "androidx.lifecycle:lifecycle-viewmodel-savedstate:2.3.0-rc01"
    }
}

@mallxiaodoudou
Copy link
Author

哦 那应该是我用的版本低了 我指定的是2.2.0
resolutionStrategy.force 'androidx.lifecycle:lifecycle-livedata:2.2.0'

@vitaviva
Copy link
Owner

vitaviva commented Feb 4, 2021

哦哦。可以去掉force或者提升一下版本吗

@mallxiaodoudou
Copy link
Author

我先用低版本吧 我看我用的2.2.0是官方最高的稳定版本 你这要求版本也是有点高哈

@vitaviva
Copy link
Owner

vitaviva commented Feb 4, 2021

那你先忍耐一下吧,我处理一下

@vitaviva
Copy link
Owner

vitaviva commented Feb 4, 2021

我先用低版本吧 我看我用的2.2.0是官方最高的稳定版本 你这要求版本也是有点高哈

0.1.6 已修复

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants