小编Ego*_*uba的帖子

将Observable <List <Car >>转换为RxJava中的Observable <Car>序列

给出一个汽车列表(List<Car> cars),我可以这样做:

Observable.just(cars); //returns an Observable that emits one List<Car>
Observable.from(cars); //returns an Observable that emits a squence of Car
Run Code Online (Sandbox Code Playgroud)

有没有办法可以从Observable一个List<Car>到一个序列Observable<Car>

from没有参数的东西

Obserable.just(cars).from()
Run Code Online (Sandbox Code Playgroud)

java reactive-programming rx-java

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

RxJava网络请求和缓存

我正在寻求一个流程的例子,我试图在RxJava的帮助下实现.

假设我想显示一个数据列表.流程应如下所示:

  1. 读缓存.如果它包含数据,请显示;
  2. 向服务器发送API请求:

    如果它返回了数据,则将其缓存并显示.

    如果它返回并且错误且没有缓存数据,则显示错误.

    如果它返回并且错误并且有缓存的内容,那么什么都不做.

现在我有一种方法可以做类似的事情(从Jake的u2020获得很多灵感).主要区别在于它使用内存缓存,这意味着不需要单独Observable从缓存中读取,它可以同步完成.

我不知道如何组合两个observable(一个用于从缓存读取而另一个用于API调用)并获得上述流程.

有什么建议?

android rx-java

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

为什么我不能在构建脚本中使用gradle task connectedDebugAndroidTest?

我可以从我的构建脚本中引用connectedCheck任务(来自android插件):

connectedCheck.finalizedBy AndroidShowTestResults
Run Code Online (Sandbox Code Playgroud)

但是尝试使用connectedDebugAndroidTest(也来自android插件)

connectedDebugAndroidTest.finalizedBy AndroidShowTestResults
Run Code Online (Sandbox Code Playgroud)

给我

错误:(48,0)无法在项目':app'上找到属性'connectedDebugAndroidTest'.

如果我试试

task connectedDebugAndroidTest << {print '123'}
Run Code Online (Sandbox Code Playgroud)

它诅咒我

错误:无法添加任务':app:connectedDebugAndroidTest'作为具有该名称的任务已存在.

我不明白为什么我不能参考connectedDebugAndroidTest

可用的gradle任务如下所示:

Gradle任务

android gradle android-gradle-plugin

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

如何以编程方式在Android中启用Lollipop中的FlashLight

Camera cam = Camera.open();     
Parameters p = cam.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
cam.setParameters(p);
cam.startPreview();
Run Code Online (Sandbox Code Playgroud)

以上剂量对Lollipop无效,因为在Lollipop中不推荐使用Camera.我无法找到任何其他方式在Lollipop中以编程方式打开Flash.我怎样才能做到这一点.提前致谢.

android

9
推荐指数
2
解决办法
1万
查看次数

如何在RxJava中执行递归可观察调用?

我对RxJava(以及一般的反应范式)都很陌生,所以请耐心等待.

假设我有这个News和这个嵌套的Comment数据结构:

public class News {
  public int id;
  public int[] commentIds; //only top level comments
  public News(int id, int[] commentIds) {
    this.id = id;
    this.commentIds = commentIds;
  }
}

public class Comment {
  public int id;
  public int parentId; //ID of parent News or parent comment
  public int[] childIds;
  public Comment(int id, int parentId, int[] childIds) {
    this.id = id;
    this.parentId = parentId;
    this.childIds = childIds;
  }
}
Run Code Online (Sandbox Code Playgroud)

并假设我有这个API端点:

getComments(int commentId) …
Run Code Online (Sandbox Code Playgroud)

java reactive-programming observable rx-java

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

在销毁应用程序时停止服务

我现在很困惑,关于运行和停止的服务概念:

我想做的事:

  • 在应用程序启动时启动位置服务.

  • 继续获取位置更新并将其存储到共享首选项

  • 应用程序范围的onDestroy中停止服务!

到目前为止,我已经搜索和研究过我们只能做服务的事情(如果我错了,请纠正我):

  • 通过将服务绑定到相关活动/片段/视图来自动停止服务,当它们全部销毁服务时自动取消绑定,这样我们就可以stopself在unbind中调用方法

  • 在onStartCommand中返回START_NOT_STICKY以告诉操作系统,不重新创建它,并创建意图本地服务,在完成某些工作后它将自行销毁.

  • 通过在某种静态范围内声明它的意图并停止onActivityDestroyedApplication类中的服务来手动停止服务[我不确定会发生什么?,每次活动被销毁时,服务会破坏吗?或者它只会在整个应用程序被销毁时销毁?]

无论哪种方式,我有点困惑和打败,一直试图调整我Location service的给定细节2天

service android location

9
推荐指数
1
解决办法
2万
查看次数

如何在Android上打开表情符号键盘?

我在我的xml文件中使用此代码来显示表情符号图标.

 android:inputType="textShortMessage|textMultiLine"  
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一种方法可以默认显示键盘.如果我单击我的应用程序上的笑脸按钮,它会打开键盘,并打开笑脸视图.

android android-edittext android-inputtype

8
推荐指数
0
解决办法
726
查看次数

如何在Gson中制作自定义列表反序列化器?

我需要反序列化具有数组的Json文件.我知道如何反序列化它以便我得到一个List对象,但在框架中我使用的是一个不实现Java List接口的自定义列表对象.我的问题是,如何为自定义列表对象编写反序列化器?

编辑:我想解串器是通用的,这意味着我希望它为每一种名单OT的工作,如CustomList<Integer>,CustomList<String>,CustomList<CustomModel>不只是一个特定类型的列表,因为这将是烦人,使解串器为每一种我使用.

java arrays json gson

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

Google Play服务需要访问哪些网址?

我的应用程序必须接收推送通知,而现在我得到SERVICE_NOT_AVAILABLE之后GoogleCloudMessaging.register()调用.

我的客户在他的办公室里有一个严格的防火墙,他无法访问Google Play服务.我需要向他提供Google Play服务需要访问的所有网址的列表,以便将其添加到白名单中.

到目前为止,我的列表中只有一个网址:googleapis.com

我没有找到关于这个主题的任何信息,所以我将不胜感激.

android google-play-services

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

Gradle - 继承产品风味

我有3种产品口味,不包括main:

productFlavors {
    xxx {
        applicationId 'com.xxx'
    }
    yyy {
        applicationId 'com.yyy'
    }
    zzz {
        applicationId 'com.zzz'
    }
}
Run Code Online (Sandbox Code Playgroud)

据我了解,这些产品风格继承了main资源,它看起来像这样:

        +------->xxx
        |           
main----+------->yyy
        |           
        +------->zzz
Run Code Online (Sandbox Code Playgroud)

所以,当我建立xxx,从摇篮捆绑的东西src/mainsrc/xxx文件夹.

现在,我需要它看起来像这样:

        +------->xxx           
        |                      
main----+------->yyy------->zzz
Run Code Online (Sandbox Code Playgroud)

换句话说,我想要zzz使用yyy的资源以及main.Gradle可以这样做吗?

android gradle

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