{"id":16347052,"url":"https://github.com/ospoon/rxapp","last_synced_at":"2025-07-05T18:35:37.646Z","repository":{"id":105557401,"uuid":"91069474","full_name":"OSpoon/RxApp","owner":"OSpoon","description":"Rx示例","archived":false,"fork":false,"pushed_at":"2017-05-12T08:32:16.000Z","size":132,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-19T05:05:46.526Z","etag":null,"topics":["rxandroid","rxjava"],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OSpoon.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-05-12T08:31:45.000Z","updated_at":"2017-05-12T08:33:18.000Z","dependencies_parsed_at":"2024-03-25T06:46:42.805Z","dependency_job_id":null,"html_url":"https://github.com/OSpoon/RxApp","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/OSpoon/RxApp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OSpoon%2FRxApp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OSpoon%2FRxApp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OSpoon%2FRxApp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OSpoon%2FRxApp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OSpoon","download_url":"https://codeload.github.com/OSpoon/RxApp/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OSpoon%2FRxApp/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263785504,"owners_count":23511120,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["rxandroid","rxjava"],"created_at":"2024-10-11T00:39:25.097Z","updated_at":"2025-07-05T18:35:37.627Z","avatar_url":"https://github.com/OSpoon.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"### 备注:\n###### (摘录自网络文章)\nObservableEmitter(发射器)\n\n    三种类型的事件\n    onNext(T value)\n    onComplete()\n    onError(Throwable error)\n\n发送和接收\n\n    1.上游可以发送无限个onNext, 下游也可以接收无限个onNext.\n    2.当上游发送了一个onComplete后, 上游onComplete之后的事件将会继续发送, 而下游收到onComplete事件之后将不再继续接收事件.\n    3.当上游发送了一个onError后, 上游onError之后的事件将继续发送, 而下游收到onError事件之后将不再继续接收事件.\n    4.上游可以不发送onComplete或onError.\n    5.最为关键的是onComplete和onError必须唯一并且互斥, 即不能发多个onComplete, 也不能发多个onError, 也不能先发一个onComplete, 然后再发一个onError, 反之亦然\n    注: 关于onComplete和onError唯一并且互斥这一点, 是需要自行在代码中进行控制, 如果你的代码逻辑中违背了这个规则, 并不一定会导致程序崩溃. 比如发送多个onComplete是可以正常运行的, 依然是收到第一个onComplete就不再接收了, 但若是发送多个onError, 则收到第二个onError事件会导致程序会崩溃.\n\nDisposable(可任意处理的)\n\n    达到设置临界点自动断开(Disposable.dispose())\n\n线程切换\n\n    多次指定上游的线程只有第一次指定的有效, 也就是说多次调用subscribeOn() 只有第一次的有效, 其余的会被忽略.\n    Observable.subscribeOn(Schedulers.newThread())//指定发送线程位置\n\n    多次指定下游的线程是可以的, 也就是说每调用一次observeOn() , 下游的线程就会切换一次.\n    Observable.subscribeOn(AndroidSchedulers.mainThread())//指定接收线程位置\n\n    在RxJava中, 已经内置了很多线程选项供我们选择, 例如有\n\n    1.Schedulers.io()\n    代表io操作的线程, 通常用于网络,读写文件等io密集型的操作\n\n    2.Schedulers.computation()\n    代表CPU计算密集型的操作, 例如需要大量计算的操作\n\n    3.Schedulers.newThread()\n    代表一个常规的新线程\n\n    4.AndroidSchedulers.mainThread()\n    代表Android的主线程\n\nCompositeDisposable.clear() 切断所有的水管\n\n    Activity销毁时调用,防止网络返回数据更新UI时崩溃,效果等于Disposable.dispose()\n\nZip通过一个函数将多个Observable发送的事件结合到一起，然后发送这些组合到一起的事件. 它按照严格的顺序应用这个函数。它只发射与发射数据项最少的那个Observable一样多的数据。\n\nsample(2, TimeUnit.SECONDS) sample取样 每隔指定的时间就从上游中取出一个事件发送给下游\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fospoon%2Frxapp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fospoon%2Frxapp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fospoon%2Frxapp/lists"}