{"adoption": {"forks": 219, "observed_at": "2026-08-28T04:05:23.795700+00:00", "stars": 1695}, "canonical_url": "https://ross.abutalabs.com/products/recovery", "card": {"archived": false, "artifact_type": "library", "description": "a crash recovery framework.（一个App异常恢复框架）", "domain": ["mobile-development", "android-tools", "developer-tools"], "enriched": true, "function": ["error-handling", "logging"], "health_score": 20, "homepage": null, "language": "Java", "license": "Apache-2.0", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["Sunzxyong/Recovery"], "name": "Sunzxyong/Recovery", "platform": ["jvm"], "pushed_at": "2019-02-17T07:17:38+00:00", "repo": "Sunzxyong/Recovery", "stars": 1695, "tags": ["crash-recovery", "android", "runtime-crash-handling", "activity-restore", "crash-reporting", "mobile"], "topics": ["recovery", "crash", "application-crash", "crash-recovery-framework", "restore"], "urls": [], "use_cases": ["automatically recover android app after a runtime crash", "restore activity stack and data after crash", "save and view crash logs in an android app", "restart app and clear cache when recovery fails", "show a debug crash screen only in development builds"], "what_it_is": "Recovery is an Android crash recovery framework written in Java that automatically handles runtime application crashes. It restores crashed activities with their stack and data, saves crash info, and can restart the app or clear cache when recovery fails.", "when_to_avoid": ["you need a full crash reporting service with server-side aggregation (use Crashlytics or Sentry)", "your project is not Android/Java", "you need actively maintained support for the latest Android versions"], "when_to_choose": ["you maintain an Android app that must survive runtime crashes gracefully", "you want automatic activity stack restoration instead of a hard crash", "you need crash info logging with silent recovery options"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/recovery", "repo": "Sunzxyong/Recovery", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:23.795700+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:37:55.699644+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1b91d8b2bf4cac497d43edb837af165b15e649ab50b5daa07e167e5955e0bcf1", "fetched_at": "2026-08-28T04:05:23.795700+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Sunzxyong/Recovery"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:23.795700+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:37:55.699644+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1b91d8b2bf4cac497d43edb837af165b15e649ab50b5daa07e167e5955e0bcf1", "fetched_at": "2026-08-28T04:05:23.795700+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Sunzxyong/Recovery"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:37:55.699644+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1b91d8b2bf4cac497d43edb837af165b15e649ab50b5daa07e167e5955e0bcf1", "fetched_at": "2026-08-28T04:05:23.795700+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Sunzxyong/Recovery"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:05:23.795700+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:23.795700+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:23.795700+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:37:55.699644+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1b91d8b2bf4cac497d43edb837af165b15e649ab50b5daa07e167e5955e0bcf1", "fetched_at": "2026-08-28T04:05:23.795700+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Sunzxyong/Recovery"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:23.795700+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:23.795700+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:37:55.699644+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1b91d8b2bf4cac497d43edb837af165b15e649ab50b5daa07e167e5955e0bcf1", "fetched_at": "2026-08-28T04:05:23.795700+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Sunzxyong/Recovery"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:23.795700+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:23.795700+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:23.795700+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:37:55.699644+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1b91d8b2bf4cac497d43edb837af165b15e649ab50b5daa07e167e5955e0bcf1", "fetched_at": "2026-08-28T04:05:23.795700+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Sunzxyong/Recovery"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:23.795700+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:23.795700+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:37:55.699644+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1b91d8b2bf4cac497d43edb837af165b15e649ab50b5daa07e167e5955e0bcf1", "fetched_at": "2026-08-28T04:05:23.795700+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Sunzxyong/Recovery"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:37:55.699644+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1b91d8b2bf4cac497d43edb837af165b15e649ab50b5daa07e167e5955e0bcf1", "fetched_at": "2026-08-28T04:05:23.795700+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Sunzxyong/Recovery"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:37:55.699644+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1b91d8b2bf4cac497d43edb837af165b15e649ab50b5daa07e167e5955e0bcf1", "fetched_at": "2026-08-28T04:05:23.795700+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Sunzxyong/Recovery"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:37:55.699644+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1b91d8b2bf4cac497d43edb837af165b15e649ab50b5daa07e167e5955e0bcf1", "fetched_at": "2026-08-28T04:05:23.795700+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Sunzxyong/Recovery"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3650, "days_push": 2754, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}