{"id":21433357,"url":"https://github.com/mgp/effective-rxjava","last_synced_at":"2025-06-18T16:34:23.131Z","repository":{"id":5594881,"uuid":"53089584","full_name":"mgp/effective-rxjava","owner":"mgp","description":"Effective RxJava","archived":false,"fork":false,"pushed_at":"2022-04-07T19:31:50.000Z","size":1423,"stargazers_count":563,"open_issues_count":2,"forks_count":35,"subscribers_count":24,"default_branch":"master","last_synced_at":"2025-03-16T22:44:04.991Z","etag":null,"topics":["immutable-values","observable","rxjava","tutorial"],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc-by-4.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mgp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-03-03T22:40:28.000Z","updated_at":"2025-02-21T23:36:44.000Z","dependencies_parsed_at":"2022-08-06T19:00:33.859Z","dependency_job_id":null,"html_url":"https://github.com/mgp/effective-rxjava","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mgp/effective-rxjava","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mgp%2Feffective-rxjava","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mgp%2Feffective-rxjava/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mgp%2Feffective-rxjava/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mgp%2Feffective-rxjava/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mgp","download_url":"https://codeload.github.com/mgp/effective-rxjava/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mgp%2Feffective-rxjava/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260589736,"owners_count":23032942,"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":["immutable-values","observable","rxjava","tutorial"],"created_at":"2024-11-22T23:27:38.319Z","updated_at":"2025-06-18T16:34:17.494Z","avatar_url":"https://github.com/mgp.png","language":null,"readme":"## Effective RxJava\n\nThis is a collection of items, each specifying one general rule, to help you write [RxJava](https://github.com/ReactiveX/RxJava) code more effectively. It is modeled after two of my favorite technical books, _Effective C++_ and _Effective Java_. I appreciate not only the soundness of their contents, but the brevity of their writing style. I hope that Effective RxJava has the same value proposition.\n\nFor each rule I've attempted to provide relevant example code -- most of which is currently in production in the [Khan Academy Android app](https://play.google.com/store/apps/details?id=org.khanacademy.android).\n\n### Items\n\n* [Use Retrolambda](items/use-retrolambda.md)\n* [Emit immutable values](items/emit-immutable-values.md)\n* [Understand `Observable` and observer chains](items/understand-observable-and-observer-chains.md)\n* [Convert functions to `Observable`](items/convert-functions-to-observable.md)\n* [Convert callbacks to `Observable`](items/convert-callbacks-to-observable.md)\n* [Understand `subscribeOn` and `observeOn`](items/understand-subscribeon-and-observeon.md)\n* [Understand `switchMap`](items/understand-switch-map.md)\n* [Test emitted values using `TestObserver`](items/test-emitted-values-using-testobserver.md)\n* [Test work scheduling using `TestScheduler`](items/test-work-scheduling-using-testscheduler.md)\n* [Use `compose` for operator sequences](items/use-compose-for-operator-sequences.md)\n* [Optimize your subscribers](items/optimize-your-subscribers.md)\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmgp%2Feffective-rxjava","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmgp%2Feffective-rxjava","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmgp%2Feffective-rxjava/lists"}