小编Rad*_*jen的帖子

使用 RxJava2 改造响应代码

因此,我想实现 API 响应的示例,如视频 droidcon NYC 2017 - Advanced Networking with RxJava + Retrofit中所示

这是我的代码:

演示者.java

compositeDisposable.add(RetrofitClient.createService(GetApi.class)
            .getResponseFromServer(token)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Consumer<ResponseFromServer>() {
                @Override
                public void accept(ResponseFromServer responseFromServer) throws Exception {
                    mView.setResponseObject(responseFromServer);
                }
            }, new Consumer<Throwable>() {
                @Override
                public void accept(Throwable throwable) throws Exception {
                    throwable.printStackTrace();
                    if (throwable instanceof HttpException) {
                        int responseCode = ((HttpException) throwable).code();
                    }

                }
            }));
Run Code Online (Sandbox Code Playgroud)

所以在这里,当我从服务器收到一些 4xx 错误响应时,我可以去Throwable获取响应代码,如果响应正常,我可以获取我的对象,一切都很酷。

然而,在上面的视频示例中,那家伙建议我用ResponseFromServer响应包装我的代码,如下所示: Single<Response<ResponseFromServer>> getResponseFromServer(@Header("X-Authorize") String token);这样我也可以访问响应代码,但在这种情况下,我的Throwable永远不会被调用,所以我只能在第一个接受中访问代码方法,但在视频中他发现了​​该Throwable部分的错误。所以,我无法弄清楚我做错了什么?也许我使用了错误的观察者?

android android-networking retrofit2 rx-java2

3
推荐指数
1
解决办法
2202
查看次数

从文件路径获取位图

所以问题是我想从绝对路径获取位图,所以我将这些路径传递ArrayList<Strings>给我的演示者,在那里我有下一段代码:

private void decodeImageUri(final ArrayList<String> imageUris) {

    while(imageCounter < imageUris.size()) {
        DecodeBitmapsThreadPool.post(new Runnable() {
            @Override
            public void run() {

                Bitmap bitmap = BitmapFactory.decodeFile(imageUris.get(imageCounter));

                mImagesBase64Array.add(bitmapToBase64(bitmap));
            }
        });
    }
    DecodeBitmapsThreadPool.finish();
    Log.d("SIZE OF BASE64", " ---------- " + mImagesBase64Array.size());

}
Run Code Online (Sandbox Code Playgroud)

这是我的 ThreadPool 类:

public class DecodeBitmapsThreadPool {

private static DecodeBitmapsThreadPool mInstance;
private ThreadPoolExecutor mThreadPoolExec;
private static int MAX_POOL_SIZE;
private static final int KEEP_ALIVE = 10;
BlockingQueue<Runnable> workQueue = new LinkedBlockingQueue<>();

public static synchronized void post(Runnable runnable) {
    if (mInstance == null) …
Run Code Online (Sandbox Code Playgroud)

android android-bitmap android-thread

1
推荐指数
1
解决办法
6772
查看次数