小编Pav*_*nko的帖子

我们是否有可能在OkHttp拦截器中停止请求?

在我们的应用程序中,我们遇到了一个特例 - 如果App.specialFlag == true我们需要,我们需要停止来自代码的任何请求.我们认为,在这种情况下,最好的方法是包括特殊的Interceptor,这将阻止我们的任何请求,如下所示:

if (App.specialFlag) {
    // Somehow stop request
} else {
    return chain.proceed(chain.request());
}
Run Code Online (Sandbox Code Playgroud)

另外,我们应该注意,我们RxJavaCallAdapterFactory用于将响应包装到Observables中.

但我们没有看到任何在OkHttp拦截器中停止请求的方法.

我们提出了两种方法来解决我们的问题:

a)创建特殊ApiService.class用于包装我们的API中的每个请求,如下所示:

public Observable<User> getUserDetails() {
    if (App.specialFlag) {
        return Observable.just(null);
    }
    return api.getUserDetails();
}
Run Code Online (Sandbox Code Playgroud)

但我们认为这是一个丑陋而繁琐的解决方案.

b)RuntimeException在Interceptor中抛出一个,然后在我们使用API​​的每个地方捕获它.

第二种解决方案也不好,因为我们需要onErrorResumeNext在链中包含很多运算符.

可能有人知道,如何以更"聪明"的方式处理我们的情况?

提前致谢!

android rx-java retrofit okhttp

15
推荐指数
2
解决办法
6978
查看次数

Android Marshmallow - 自定义搜索栏进度条未显示

我正在尝试像这样自定义我的搜索栏:

自定义搜索栏

在API级别<23时,即使seekbar的进度等于0,也可以看到进度线.但是在API级别= 23时,我有一个奇怪的问题:进度线在相同的条件下没有显示= /我想看到这一行,因为它澄清使用我的搜索栏的边界.

我的seek_bar_progress_bar.xml:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@android:id/background" android:drawable="@drawable/seek_bar_track" />
    <item android:id="@android:id/secondaryProgress">
        <scale
            android:drawable="@drawable/seek_bar_track"
            android:scaleWidth="100%" />
    </item>
    <item android:id="@android:id/progress">
        <scale
            android:drawable="@drawable/seek_bar_track"
            android:scaleWidth="100%" />
    </item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)

我的style.xml:

<style name="seek_bar_style" parent="android:Widget.Holo.Light.SeekBar">
    <item name="android:progressDrawable">@drawable/seek_bar_progress_bar</item>
    <item name="android:indeterminateDrawable">@drawable/seek_bar_progress_bar</item>
    <item name="android:thumb">@drawable/seek_bar_thumb_selector</item>
</style>
Run Code Online (Sandbox Code Playgroud)

提前致谢!

android android-styles android-seekbar

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

无法在魅族m3笔记上安装.obb文件(state = 21)

我遇到了另一个与APK Expansion文件(.obb文件)有关的奇怪问题.我的扩展文件在我的所有测试设备上都正常安装:

  • Sony Xperia Z1 Compact(API 22)
  • 索尼Xperia Z1 Ultra(API 22)
  • LG Nexus 5X(API 23)
  • LG Nexus 4(API 17)

我用jobb -utilite 创建了加密的.obb文件:

jobb -o obb-filename -d files -dir -k password -pn applicationId -pv versionCode

在我的应用程序中,我使用以下代码读取.obb文件:

public void initialize(final Context context) {
    final StorageManager storageManager = (StorageManager) context.getSystemService(Context.STORAGE_SERVICE);
    final File mainObbFile = getMainObbFile();

    final OnObbStateChangeListener listener = new OnObbStateChangeListener() {
        @Override
        public void onObbStateChange(String path, int state) {
            super.onObbStateChange(path, state);
            if (state == OnObbStateChangeListener.MOUNTED) {
                // work with obb file …
Run Code Online (Sandbox Code Playgroud)

android apk-expansion-files

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