zskingking / jetpack-mvvm Goto Github PK
View Code? Open in Web Editor NEW使用Jetpack全家桶+Kotlin实现的Android社区App加音乐播放器。不写晦涩难懂的代码,尽量标清每一行注释,严格遵守六大基本原则,大量运用设计模式,此项目可快速帮你入手Kotlin、Jetpack。如果觉得对你有帮助,右上角点个star,事先谢过🍉🍉🍉
使用Jetpack全家桶+Kotlin实现的Android社区App加音乐播放器。不写晦涩难懂的代码,尽量标清每一行注释,严格遵守六大基本原则,大量运用设计模式,此项目可快速帮你入手Kotlin、Jetpack。如果觉得对你有帮助,右上角点个star,事先谢过🍉🍉🍉
一直卡在ERROR: Unknown host 'd29vzk4ow07wi7.cloudfront.net'. You may need to adjust the proxy settings in Gradle
Could not get resource 'https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.3.21/kotlin-annotation-processing-gradle-1.3.21.jar'
您好,为什么adapter中item布局使用textview自定义属性style="@style/text_2"(?attr/theme_color_2)直接回崩溃掉,不在recycleview里使用就会正常呢
你好:
正好最近在看jetpack相关的,你写的这个例子很不错,
想请教下,如何处理token过期呢? 每个接口都可能返回token过期的信息,如果token过期返回登录页面,这个问题在哪处理比较好呢?
我看你封装了统一的错误处理,如果在这里面去跳转到登录总感觉不是太好。
首先赞一下大佬掘金的两篇高质量文章。
看了下代码,对launch{}
这个封装 有几个小建议:
一是 Dispatcher
建议手动传入,这样使用者更明确block: suspend () -> T的执行环境
二是 success和error这两个callback的线程环境建议统一下,比如要么与block: suspend () -> T 相同,要么统一切换到主线程。
三是
onFailure {
it.printStackTrace()
getApiException(it).apply {
error?.invoke(this)
toast(errorMessage)
//统一响应错误信息
errorLiveData.value = this
}
}
这里 toast(errorMessage) errorLiveData.value = this
可能有bug哈 建议用withContext(Dispatchers.Main.immediate)
包一下
我想把项目重新写一下 然后splash 中 android:background="?attr/main_bg_1" 的颜色引用 报错 Failed to resolve attribute at index 13: TypedValue{t=0x2/d=0x7f0301da a=-1} 主题和自定义颜色也复制到新项目了 �请问大神是什么原因
编译的时候,出现下面的错误:
Jetpack-Mvvm/app/build/generated/source/kapt/debug/com/zs/zs_jetpack/databinding/FragmentMineBindingImpl.java:193: 错误: 对getInternal的引用不明确
vmInternal = vm.getInternal();
^
MineVM 中的方法 getInternal() 和 MineVM 中的方法 getInternal() 都匹配
请问该怎么解决呢?
有两个问题想请教一下:
1,A跳转到B的同时,如何关闭A?
2,A-B-C-D,此时如何在D直接回到A(关闭B和C)?
系统版本:macOS 11.5.2
AS版本:Android Studio Flamingo | 2022.2.1 Patch 2
编译爆如下错误:
* What went wrong:
Execution failed for task ':zsLib:compileDebugJavaWithJavac'.
> Failed to calculate the value of task ':zsLib:compileDebugJavaWithJavac' property 'options.generatedSourceOutputDirectory'.
> Querying the mapped value of map(java.io.File property(org.gradle.api.file.Directory, fixed(class org.gradle.api.internal.file.DefaultFilePropertyFactory$FixedDirectory, /Users/zxkang/WorkSpace/Java/Jetpack-Mvvm/zsLib/build/generated/ap_generated_sources/debug/out)) org.gradle.api.internal.file.DefaultFilePropertyFactory$ToFileTransformer@66a3a6b5) before task ':zsLib:compileDebugJavaWithJavac' has completed is not supported
页面调用nav().navigateUp返回,之后再次打开此页面的时候observe,中的LiveData监听都产生了一次回调
2021-05-14 15:06:59.177 15290-15290/com.zs.zs_jetpack W/System.err: java.net.SocketTimeoutException: failed to connect to www.wanandroid.com/47.104.74.169 (port 443) from /192.168.17.44 (port 46810) after 10000ms
2021-05-14 15:06:59.177 15290-15290/com.zs.zs_jetpack W/System.err: at libcore.io.IoBridge.connectErrno(IoBridge.java:185)
2021-05-14 15:06:59.178 15290-15290/com.zs.zs_jetpack W/System.err: at libcore.io.IoBridge.connect(IoBridge.java:129)
2021-05-14 15:06:59.178 15290-15290/com.zs.zs_jetpack W/System.err: at java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:137)
2021-05-14 15:06:59.178 15290-15290/com.zs.zs_jetpack W/System.err: at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:391)
2021-05-14 15:06:59.178 15290-15290/com.zs.zs_jetpack W/System.err: at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:231)
2021-05-14 15:06:59.178 15290-15290/com.zs.zs_jetpack W/System.err: at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:213)
2021-05-14 15:06:59.179 15290-15290/com.zs.zs_jetpack W/System.err: at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:436)
2021-05-14 15:06:59.179 15290-15290/com.zs.zs_jetpack W/System.err: at java.net.Socket.connect(Socket.java:621)
2021-05-14 15:06:59.179 15290-15290/com.zs.zs_jetpack W/System.err: at okhttp3.internal.platform.AndroidPlatform.connectSocket(AndroidPlatform.kt:63)
2021-05-14 15:06:59.179 15290-15290/com.zs.zs_jetpack W/System.err: at okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.kt:295)
2021-05-14 15:06:59.179 15290-15290/com.zs.zs_jetpack W/System.err: at okhttp3.internal.connection.RealConnection.connect(RealConnection.kt:207)
2021-05-14 15:06:59.179 15290-15290/com.zs.zs_jetpack W/System.err: at okhttp3.internal.connection.ExchangeFinder.findConnection(ExchangeFinder.kt:226)
2021-05-14 15:06:59.179 15290-15290/com.zs.zs_jetpack W/System.err: at okhttp3.internal.connection.ExchangeFinder.findHealthyConnection(ExchangeFinder.kt:106)
2021-05-14 15:06:59.180 15290-15290/com.zs.zs_jetpack W/System.err: at okhttp3.internal.connection.ExchangeFinder.find(ExchangeFinder.kt:74)
2021-05-14 15:06:59.180 15290-15290/com.zs.zs_jetpack W/System.err: at okhttp3.internal.connection.RealCall.initExchange$okhttp(RealCall.kt:255)
2021-05-14 15:06:59.180 15290-15290/com.zs.zs_jetpack W/System.err: at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.kt:32)
2021-05-14 15:06:59.180 15290-15290/com.zs.zs_jetpack W/System.err: at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
2021-05-14 15:06:59.180 15290-15290/com.zs.zs_jetpack W/System.err: at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.kt:95)
2021-05-14 15:06:59.180 15290-15290/com.zs.zs_jetpack W/System.err: at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
2021-05-14 15:06:59.181 15290-15290/com.zs.zs_jetpack W/System.err: at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.kt:83)
2021-05-14 15:06:59.181 15290-15290/com.zs.zs_jetpack W/System.err: at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
2021-05-14 15:06:59.181 15290-15290/com.zs.zs_jetpack W/System.err: at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.kt:76)
2021-05-14 15:06:59.181 15290-15290/com.zs.zs_jetpack W/System.err: at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
2021-05-14 15:06:59.181 15290-15290/com.zs.zs_jetpack W/System.err: at com.zs.base_library.http.HttpLoggingInterceptor.intercept(HttpLoggingInterceptor.java:75)
2021-05-14 15:06:59.181 15290-15290/com.zs.zs_jetpack W/System.err: at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
2021-05-14 15:06:59.182 15290-15290/com.zs.zs_jetpack W/System.err: at okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp(RealCall.kt:201)
2021-05-14 15:06:59.182 15290-15290/com.zs.zs_jetpack W/System.err: at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:517)
2021-05-14 15:06:59.182 15290-15290/com.zs.zs_jetpack W/System.err: at java.util.concurrent.ThreadPoolExecutor.processTask(ThreadPoolExecutor.java:1187)
2021-05-14 15:06:59.182 15290-15290/com.zs.zs_jetpack W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
2021-05-14 15:06:59.182 15290-15290/com.zs.zs_jetpack W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
2021-05-14 15:06:59.182 15290-15290/com.zs.zs_jetpack W/System.err: at java.lang.Thread.run(Thread.java:784)
e: java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
希望楼主多多优化。
建议播放器可以增加通知栏和锁屏事件,更加完善;大佬有空的话,帮忙加一下,学习学习O(∩_∩)O
他们的具体区别是啥,以及使用场景
刚才点击了几分钟,报了很多内存泄漏的消息
Build file 'E:..\Jetpack-Mvvm\app\build.gradle' line: 7
A problem occurred evaluating project ':app'.
Could not get unknown property 'Version' for object of type com.android.build.gradle.internal.dsl.BaseAppModuleExtension.
但我个人认为血燥Model层更为合适
谢谢大佬的框架,我在挑选框架的时候看到了大佬的库,感觉很不错。不过其中有一些小疑虑。
1、就是databinding与业务的紧密耦合,导致页面的复用性很差,大佬可有想过用其他方式去实现。
2、我看一个UI组件(fragment,activity)中只能使用一个viewModel与页面的databinding 通过DataBindingConfig绑定,如果一个fragment或者actvity中有多个业务的组合,即可能有多个viewmodel同时作为一个UI单元的数据源时,框架该如何做?
最后再次谢谢大佬的框架。
关于LiveData状态共享的倒灌问题
请问
一个LiveData被多个fragment分享,当前一个fragment收到后退出,再返回,仍然会收到LiveData之前的值,而理想的状态是Fragment只接收到一次,销耗后就不再接受旧值
e: java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
请教一下,你于2020年9月17号添加的“buildSrc”是个什么模块?怎么与“app”模块和“base-library”模块产生联系的,怎么在app和base-library中就能直接调用 buildSrc中的那几个objec类了?我看了半天,没有搞懂,烦请兄弟有空帮忙释疑一下,感谢。 ps:代码写的的确很美观
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.