{"adoption": {"forks": 1020, "observed_at": "2026-08-28T04:09:48.134962+00:00", "stars": 6729}, "canonical_url": "https://ross.abutalabs.com/products/androidperformancemonitor", "card": {"archived": false, "artifact_type": "library", "description": "A transparent ui-block detection library for Android. (known as BlockCanary)", "domain": ["mobile-development", "performance", "developer-tools"], "enriched": true, "function": ["monitoring", "logging", "developer-tools"], "health_score": 20, "homepage": null, "language": "Java", "license": "Apache-2.0", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["markzhai/AndroidPerformanceMonitor"], "name": "markzhai/AndroidPerformanceMonitor", "platform": [], "pushed_at": "2023-07-15T06:37:52+00:00", "repo": "markzhai/AndroidPerformanceMonitor", "stars": 6729, "tags": ["apm", "blockcanary", "anr-detection", "ui-block", "java", "android-library", "android"], "topics": ["android", "performance", "monitor", "apm", "blockcanary", "anr", "detection-library"], "urls": [], "use_cases": ["detect ui thread blocks in my android app", "find causes of anr and jank in android", "monitor main looper stalls during development", "profile slow frame rendering on android", "get notifications when the ui thread freezes"], "what_it_is": "A transparent UI-block detection library for Android, known as BlockCanary, that monitors main-thread stalls and ANR-like jank with one-line setup. It logs and displays block events with configurable context, white-lists, and notification-based reporting.", "when_to_avoid": ["you need full APM/production telemetry rather than local block detection", "your app already overrides getMainLooper().setMessageLogging()", "you need actively maintained support for the latest Android versions"], "when_to_choose": ["you are debugging UI jank or ANRs on Android and want lightweight, transparent detection", "you want a debug-build-only monitor with minimal integration code"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/androidperformancemonitor", "repo": "markzhai/AndroidPerformanceMonitor", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:48.134962+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:42:53.138825+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3367b3bc8e109744e13ffd14664260537180af59294e33abc3ed4c42847303e5", "fetched_at": "2026-08-28T04:09:48.134962+00:00", "kind": "readme", "missing": false, "url": "https://github.com/markzhai/AndroidPerformanceMonitor"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:48.134962+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:42:53.138825+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3367b3bc8e109744e13ffd14664260537180af59294e33abc3ed4c42847303e5", "fetched_at": "2026-08-28T04:09:48.134962+00:00", "kind": "readme", "missing": false, "url": "https://github.com/markzhai/AndroidPerformanceMonitor"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:42:53.138825+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3367b3bc8e109744e13ffd14664260537180af59294e33abc3ed4c42847303e5", "fetched_at": "2026-08-28T04:09:48.134962+00:00", "kind": "readme", "missing": false, "url": "https://github.com/markzhai/AndroidPerformanceMonitor"}], "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:09:48.134962+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:48.134962+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:48.134962+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:42:53.138825+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3367b3bc8e109744e13ffd14664260537180af59294e33abc3ed4c42847303e5", "fetched_at": "2026-08-28T04:09:48.134962+00:00", "kind": "readme", "missing": false, "url": "https://github.com/markzhai/AndroidPerformanceMonitor"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:48.134962+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:48.134962+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:42:53.138825+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3367b3bc8e109744e13ffd14664260537180af59294e33abc3ed4c42847303e5", "fetched_at": "2026-08-28T04:09:48.134962+00:00", "kind": "readme", "missing": false, "url": "https://github.com/markzhai/AndroidPerformanceMonitor"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:48.134962+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:48.134962+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:48.134962+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:42:53.138825+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3367b3bc8e109744e13ffd14664260537180af59294e33abc3ed4c42847303e5", "fetched_at": "2026-08-28T04:09:48.134962+00:00", "kind": "readme", "missing": false, "url": "https://github.com/markzhai/AndroidPerformanceMonitor"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:48.134962+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:48.134962+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:42:53.138825+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3367b3bc8e109744e13ffd14664260537180af59294e33abc3ed4c42847303e5", "fetched_at": "2026-08-28T04:09:48.134962+00:00", "kind": "readme", "missing": false, "url": "https://github.com/markzhai/AndroidPerformanceMonitor"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:42:53.138825+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3367b3bc8e109744e13ffd14664260537180af59294e33abc3ed4c42847303e5", "fetched_at": "2026-08-28T04:09:48.134962+00:00", "kind": "readme", "missing": false, "url": "https://github.com/markzhai/AndroidPerformanceMonitor"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:42:53.138825+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3367b3bc8e109744e13ffd14664260537180af59294e33abc3ed4c42847303e5", "fetched_at": "2026-08-28T04:09:48.134962+00:00", "kind": "readme", "missing": false, "url": "https://github.com/markzhai/AndroidPerformanceMonitor"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:42:53.138825+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3367b3bc8e109744e13ffd14664260537180af59294e33abc3ed4c42847303e5", "fetched_at": "2026-08-28T04:09:48.134962+00:00", "kind": "readme", "missing": false, "url": "https://github.com/markzhai/AndroidPerformanceMonitor"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3881, "days_push": 1145, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}