在我们的应用程序中,我们遇到了一个特例 - 如果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在链中包含很多运算符.
可能有人知道,如何以更"聪明"的方式处理我们的情况?
提前致谢!
我正在尝试像这样自定义我的搜索栏:
在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)
提前致谢!
我遇到了另一个与APK Expansion文件(.obb文件)有关的奇怪问题.我的扩展文件在我的所有测试设备上都正常安装:
我用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)