We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
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
Photo Hunter之旅暂停下。主要功能马马虎虎完成。不能在原有代码上继续了,因为代码实在太难看了。需要切出分支来优化下代码。 使用OKHttpClient组件的Callback回调后,特别是两次回调后,嵌套代码层有点代码坏味道。但是安卓JAVA没有协程库,可以把多个异步操作给串联起来。 RX,全名ReactiveX。中文翻译会响应式编程。这个库是一个科学家带着团队研发的,(我怎么觉得应该是个哲学家)。当初在.net环境下使用过这个库。WPF和.net core 平台上都使用过,其实.net平台上起步还是很早的。 这个库的思想是很反人类的,从物理上讲就是反物质,
由于Android的JAVA语言环境下不支持协程。Rx就变成了非常合适的团结对象。其实.net 在推出了aync await以后Rx就基本没必要使用了,双方都有互相替代的方案。
废话太多了直接开干 build.gradle for Project
allprojects { repositories { google() jcenter() maven { url "https://oss.jfrog.org/libs-snapshot" } } }
build.gradle for Module
dependencies { implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'com.google.android.material:material:1.1.0' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' implementation 'io.reactivex.rxjava3:rxandroid:3.0.0' implementation 'io.reactivex.rxjava3:rxjava:3.0.0' implementation("com.squareup.okhttp3:okhttp:4.9.0") implementation 'com.orhanobut:logger:2.2.0' implementation 'com.google.code.gson:gson:2.8.6' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' }
写一个返回Json泛型对象的的Observable,把大量的细节都封装起来。 小小吐槽下泛型,有点不一样,卡壳了好久
private <T> Observable<T> HttpJsonObservable( Call call , Class<T> classOfT ) { return Observable.create(subscriber -> { Logger.i( "------Begin To Request Http Thread:%s", Thread.currentThread().getId() ); call.enqueue(new Callback() { @Override public void onFailure(@NotNull Call call, @NotNull IOException e) { Logger.i("------- Http Error:%s", e.getMessage() ); subscriber.onError( e ); } @Override public void onResponse(@NotNull Call call, @NotNull Response response) { Logger.i("------- Http Response Thread:%s", Thread.currentThread().getId() ); try (ResponseBody body = response.body()){ if( response.isSuccessful() ) { try { String json = body.string(); Gson gson = new Gson(); T jsonObj = gson.fromJson(json,classOfT ); subscriber.onNext(jsonObj); subscriber.onComplete(); } catch (IOException e) { subscriber.onError(e); } } else { subscriber.onError( new Exception( String.format( "error state code: %s", response.code() ) ) ); } } } }); }); }
调用部分处理
textView = this.findViewById((R.id.msg_view)); this.findViewById(R.id.button).setOnClickListener( v -> { Request request = new Request.Builder() .url(url) .get() .build(); Call call = client.newCall(request); HttpJsonObservable(call,Photo.class) .observeOn(AndroidSchedulers.mainThread()) .subscribe( t -> this.textView.setText(t.alt_description), error -> this.textView.setText(error.getMessage()) ); } );
接下来就可以看到图片信息了 未完待续。只是起了一个头。还没做到要想要的那种效果。 Rx的Java库还是不熟,需要一点时间查资料学习(目前的经验全在Rx.net里面,主要api应该都有对标项的)。但是我相信一定是能完成的 我的设计思路是这样 1 访问API产生json是一个Observable 2 下载图片产生Image是另外一个Observable 3 两个Observable做链式串联 4 订阅者只要做做收尾工作就行了,赋值下图片信息,呈现下图片
[另外我还想把下载处理图片的这部分功能用 glide换掉,看文档代码简单到令人发指,一步步来吧
传送门
今天晚上不更新了,给儿子做兔子灯(●ˇ∀ˇ●)
The text was updated successfully, but these errors were encountered:
No branches or pull requests
前言Blibli
Photo Hunter之旅暂停下。主要功能马马虎虎完成。不能在原有代码上继续了,因为代码实在太难看了。需要切出分支来优化下代码。
使用OKHttpClient组件的Callback回调后,特别是两次回调后,嵌套代码层有点代码坏味道。但是安卓JAVA没有协程库,可以把多个异步操作给串联起来。
RX,全名ReactiveX。中文翻译会响应式编程。这个库是一个科学家带着团队研发的,(我怎么觉得应该是个哲学家)。当初在.net环境下使用过这个库。WPF和.net core 平台上都使用过,其实.net平台上起步还是很早的。
这个库的思想是很反人类的,从物理上讲就是反物质,
由于Android的JAVA语言环境下不支持协程。Rx就变成了非常合适的团结对象。其实.net 在推出了aync await以后Rx就基本没必要使用了,双方都有互相替代的方案。
代码实现部分
废话太多了直接开干
build.gradle for Project
allprojects { repositories { google() jcenter() maven { url "https://oss.jfrog.org/libs-snapshot" } } }
build.gradle for Module
写一个返回Json泛型对象的的Observable,把大量的细节都封装起来。
小小吐槽下泛型,有点不一样,卡壳了好久
调用部分处理
接下来就可以看到图片信息了
未完待续。只是起了一个头。还没做到要想要的那种效果。
Rx的Java库还是不熟,需要一点时间查资料学习(目前的经验全在Rx.net里面,主要api应该都有对标项的)。但是我相信一定是能完成的
我的设计思路是这样
1 访问API产生json是一个Observable
2 下载图片产生Image是另外一个Observable
3 两个Observable做链式串联
4 订阅者只要做做收尾工作就行了,赋值下图片信息,呈现下图片
[另外我还想把下载处理图片的这部分功能用 glide换掉,看文档代码简单到令人发指,一步步来吧
仓库地址
传送门
参考资料
今天晚上不更新了,给儿子做兔子灯(●ˇ∀ˇ●)
The text was updated successfully, but these errors were encountered: