{"id":30221,"date":"2026-10-02T05:09:55","date_gmt":"2026-10-02T05:09:55","guid":{"rendered":"https:\/\/umang.pk\/2026\/10\/02\/%d9%88%db%8c%da%a9-%d9%84%d8%a7%da%a9-%da%a9%d8%a7-%d8%a7%d8%b3%d8%aa%d8%b9%d9%85%d8%a7%d9%84-%da%a9%d8%b1%d8%aa%db%92-%db%81%d9%88%d8%a6%db%92-%d8%a7%db%8c%d9%86%da%88%d8%b1%d8%a7%d8%a6%db%8c%da%88\/"},"modified":"2026-10-02T05:09:55","modified_gmt":"2026-10-02T05:09:55","slug":"%d9%88%db%8c%da%a9-%d9%84%d8%a7%da%a9-%da%a9%d8%a7-%d8%a7%d8%b3%d8%aa%d8%b9%d9%85%d8%a7%d9%84-%da%a9%d8%b1%d8%aa%db%92-%db%81%d9%88%d8%a6%db%92-%d8%a7%db%8c%d9%86%da%88%d8%b1%d8%a7%d8%a6%db%8c%da%88","status":"publish","type":"post","link":"https:\/\/umang.pk\/ur\/2026\/10\/02\/%d9%88%db%8c%da%a9-%d9%84%d8%a7%da%a9-%da%a9%d8%a7-%d8%a7%d8%b3%d8%aa%d8%b9%d9%85%d8%a7%d9%84-%da%a9%d8%b1%d8%aa%db%92-%db%81%d9%88%d8%a6%db%92-%d8%a7%db%8c%d9%86%da%88%d8%b1%d8%a7%d8%a6%db%8c%da%88\/","title":{"rendered":"\u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0627\u06cc\u0646\u0688\u0631\u0627\u0626\u06cc\u0688 \u0627\u06cc\u067e\u0633 \u06a9\u0648 \u0627\u067e\u0646\u06cc \u0628\u06cc\u0679\u0631\u06cc \u06a9\u0648 \u062e\u062a\u0645 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u06a9\u06cc\u0633\u06d2 \u0631\u0648\u06a9\u0627 \u062c\u0627\u0626\u06d2\u06d4"},"content":{"rendered":"\n<div id=\"\">\n<p>\u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u0627\u06cc\u0646\u0688\u0631\u0627\u0626\u06cc\u0688 \u06a9\u06d2 \u0622\u0633\u0627\u0646 \u062a\u0631\u06cc\u0646 APIs \u0645\u06cc\u06ba \u0633\u06d2 \u0627\u06cc\u06a9 \u06c1\u06d2 \u0627\u0648\u0631 \u063a\u0644\u0637 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u0645\u06cc\u06ba \u0622\u0633\u0627\u0646 \u062a\u0631\u06cc\u0646 \u06c1\u06d2\u06d4 \u0627\u0633\u06d2 \u062d\u0627\u0635\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u0648\u0688 \u06a9\u06cc \u0627\u06cc\u06a9 \u0644\u0627\u0626\u0646 \u0644\u06af\u062a\u06cc \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u0622\u067e \u0627\u0633\u06d2 \u0622\u0641 \u06a9\u0631\u0646\u0627 \u0628\u06be\u0648\u0644 \u062c\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0622\u067e \u06a9\u06d2 \u0641\u0648\u0646 \u06a9\u0627 CPU \u06af\u06be\u0646\u0679\u0648\u06ba \u062a\u06a9 \u0641\u0639\u0627\u0644 \u0631\u06c1\u06d2 \u06af\u0627\u060c \u0622\u067e \u06a9\u06cc \u0628\u06cc\u0679\u0631\u06cc \u0631\u0627\u062a\u0648\u06ba \u0631\u0627\u062a \u062e\u062a\u0645 \u06c1\u0648 \u062c\u0627\u0626\u06d2 \u06af\u06cc\u060c \u0627\u0648\u0631 \u0622\u067e \u06a9\u0648 Google Play \u067e\u0631 \u0627\u067e\u0646\u06cc \u0627\u06cc\u067e \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0646\u062a\u0628\u0627\u06c1\u06cc \u0644\u06cc\u0628\u0644 \u0646\u0638\u0631 \u0622 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0632\u06cc\u0627\u062f\u06c1 \u062a\u0631 \u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u06a9\u06cc\u0691\u06d2 \u062e\u0648\u062f API \u06a9\u0648 \u063a\u0644\u0637 \u0633\u0645\u062c\u06be\u0646\u06d2 \u06a9\u06cc \u0648\u062c\u06c1 \u0633\u06d2 \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06cc\u06c1 \u0627\u06cc\u06a9 \u0639\u0627\u0645 \u06a9\u0646\u0679\u0631\u0648\u0644 \u0628\u06c1\u0627\u0624 \u06a9\u06d2 \u0645\u0633\u0626\u0644\u06d2 \u0633\u06d2 \u067e\u06cc\u062f\u0627 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4 <code>acquire()<\/code> \u0627\u0648\u0631 <code>release()<\/code>\u0627\u0646 \u0645\u06cc\u06ba \u0642\u0628\u0644 \u0627\u0632 \u0648\u0642\u062a \u0648\u0627\u067e\u0633\u06cc\u060c \u06a9\u0627\u0644 \u0628\u06cc\u06a9\u0633 \u062c\u0646 \u067e\u0631 \u0639\u0645\u0644 \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u0627\u060c \u06cc\u0627 \u063a\u06cc\u0631 \u0645\u062a\u0648\u0627\u0632\u0646 \u062d\u0648\u0627\u0644\u06c1 \u0634\u0645\u0627\u0631 \u0634\u0627\u0645\u0644 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u06cc\u06c1 \u06a9\u06cc\u0691\u06d2 \u06a9\u0648\u0688 \u06a9\u06d2 \u062c\u0627\u0626\u0632\u06d2 \u0645\u06cc\u06ba \u062a\u0644\u0627\u0634 \u06a9\u0631\u0646\u0627 \u0645\u0634\u06a9\u0644 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0639\u0627\u0645 \u062c\u0627\u0646\u0686 \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646 \u067e\u0648\u0634\u06cc\u062f\u06c1 \u06c1\u06cc\u06ba\u06d4 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u0622\u0644\u06c1 \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 \u062c\u0691\u0627 \u06c1\u0648\u0627 \u0627\u0648\u0631 \u0628\u06cc\u062f\u0627\u0631 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1 \u0645\u0636\u0645\u0648\u0646 \u0628\u062a\u0627\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0648\u06cc\u06a9 \u0644\u0627\u06a9\u0633 \u0627\u0635\u0644 \u0645\u06cc\u06ba \u0633\u0633\u0679\u0645 \u0644\u06cc\u0648\u0644 \u067e\u0631 \u06a9\u06cc\u0627 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0627\u06cc\u067e\u0633 \u06a9\u06d2 \u0648\u06cc\u06a9 \u0644\u0627\u06a9\u0633 \u06a9\u0648 \u0644\u06cc\u06a9 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0633\u0628 \u0633\u06d2 \u0639\u0627\u0645 \u0637\u0631\u06cc\u0642\u0648\u06ba \u06a9\u0648 \u062f\u06cc\u06a9\u06be\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u0644\u06cc\u06a9 \u06a9\u0648 \u0631\u0648\u06a9\u0646\u06d2 \u0627\u0648\u0631 \u0627\u0646 \u06a9\u0627 \u067e\u062a\u06c1 \u0644\u06af\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u062e\u0635\u0648\u0635 \u067e\u06cc\u0679\u0631\u0646 \u0627\u0648\u0631 \u0679\u0648\u0644\u0632 \u062f\u06a9\u06be\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u062c\u062f\u06cc\u062f APIs \u06a9\u0627 \u0628\u06be\u06cc \u0627\u062d\u0627\u0637\u06c1 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0646\u06c1\u06cc\u06ba \u0632\u06cc\u0627\u062f\u06c1 \u062a\u0631 \u0645\u0639\u0627\u0645\u0644\u0627\u062a \u0645\u06cc\u06ba \u062f\u0633\u062a\u06cc \u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-table-of-contents\">\u0627\u0646\u0688\u06cc\u06a9\u0633<\/h2>\n<h2 id=\"heading-prerequisites\">\u0634\u0631\u0637\u06cc\u06ba<\/h2>\n<p>\u0622\u067e \u06a9\u0648 \u06a9\u0648\u0679\u0644\u0646 \u0645\u06cc\u06ba \u0627\u06cc\u0646\u0688\u0631\u0627\u0626\u06cc\u0688 \u0627\u06cc\u067e\u0633 \u0644\u06a9\u06be\u0646\u06d2 \u0645\u06cc\u06ba \u0645\u0627\u06c1\u0631 \u06c1\u0648\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2 \u0627\u0648\u0631 \u0622\u067e \u06a9\u0648 \u0633\u0631\u0648\u0633\u0632\u060c \u0628\u0631\u0627\u0688\u06a9\u0627\u0633\u0679 \u0631\u06cc\u0633\u06cc\u0648\u0631\u0632\u060c \u0627\u0648\u0631 \u06a9\u0648\u0631\u0648\u0679\u0627\u0626\u0646\u0632 \u06a9\u06cc \u0628\u0646\u06cc\u0627\u062f\u06cc \u0628\u0627\u062a\u06cc\u06ba \u062c\u0627\u0646\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4<\/p>\n<p>\u0622\u067e \u06a9\u0648 \u0628\u06be\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2 <code>adb<\/code> \u0688\u06cc\u0628\u06af\u0646\u06af \u0633\u06cc\u06a9\u0634\u0646 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u0641\u0632\u06cc\u06a9\u0644 \u0688\u06cc\u0648\u0627\u0626\u0633 \u0627\u0646\u0633\u0679\u0627\u0644 \u06c1\u06d2\u06d4 \u0627\u06cc\u0645\u0648\u0644\u06cc\u0679\u0631 \u067e\u0627\u0648\u0631 \u0633\u0679\u06cc\u0679\u0633 \u06a9\u0648 \u062d\u0642\u06cc\u0642\u062a \u067e\u0633\u0646\u062f\u0627\u0646\u06c1 \u0627\u0646\u062f\u0627\u0632 \u0645\u06cc\u06ba \u0645\u0627\u0688\u0644 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u062a\u0627\u060c \u0627\u0633 \u0644\u06cc\u06d2 \u0628\u0639\u062f \u0645\u06cc\u06ba \u0627\u0633 \u0645\u0636\u0645\u0648\u0646 \u0645\u06cc\u06ba \u06a9\u0686\u06be \u06a9\u0645\u0627\u0646\u0688\u0632 \u063a\u0644\u0637 \u0646\u062a\u0627\u0626\u062c \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba\u06d4<\/p>\n<h2 id=\"heading-what-happens-when-an-android-device-sleeps\">\u062c\u0628 \u0622\u067e \u06a9\u0627 Android \u0622\u0644\u06c1 \u0633\u0644\u06cc\u067e \u0645\u0648\u0688 \u0645\u06cc\u06ba \u0686\u0644\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u062a\u0648 \u06a9\u06cc\u0627 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u061f<\/h2>\n<p>\u062c\u0628 \u0627\u0633\u06a9\u0631\u06cc\u0646 \u0622\u0641 \u06c1\u0648\u062a\u06cc \u06c1\u06d2 \u0627\u0648\u0631 \u06a9\u0633\u06cc \u0627\u0648\u0631 \u0686\u06cc\u0632 \u06a9\u0648 CPU \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u060c \u062a\u0648 \u0627\u06cc\u0646\u0688\u0631\u0627\u0626\u06cc\u0688 \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u067e\u0631\u0648\u0633\u06cc\u0633\u0631 \u06a9\u0648 \u06a9\u0645 \u0637\u0627\u0642\u062a \u0648\u0627\u0644\u06cc \u0645\u0639\u0637\u0644 \u062d\u0627\u0644\u062a \u0645\u06cc\u06ba \u0631\u06a9\u06be\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u0633 \u062d\u0627\u0644\u062a \u0645\u06cc\u06ba\u060c CPU \u06c1\u062f\u0627\u06cc\u0627\u062a \u067e\u0631 \u0639\u0645\u0644 \u06a9\u0631\u0646\u0627 \u0628\u0646\u062f \u06a9\u0631 \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u060c \u0632\u06cc\u0627\u062f\u06c1 \u062a\u0631 RAM \u062e\u0648\u062f \u06a9\u0648 \u062a\u0627\u0632\u06af\u06cc \u0628\u062e\u0634\u062a\u06cc \u06c1\u06d2\u060c \u0627\u0648\u0631 \u0635\u0631\u0641 \u0686\u0646\u062f \u06c1\u0627\u0631\u0688\u0648\u06cc\u0626\u0631 \u0628\u0644\u0627\u06a9\u0633 (\u0645\u0648\u0688\u06cc\u0645\u060c \u0631\u06cc\u0626\u0644 \u0679\u0627\u0626\u0645 \u06a9\u0644\u0627\u06a9\u060c \u0633\u06cc\u0646\u0633\u0631 \u06c1\u0628\u060c \u0627\u0648\u0631 \u0686\u0646\u062f \u0627\u0646\u0679\u0631\u067e\u0679 \u06a9\u0646\u0679\u0631\u0648\u0644\u0631\u0632) \u0632\u0646\u062f\u06c1 \u0631\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0622\u0644\u06c1 \u0628\u06cc\u06a9\u0627\u0631 \u062f\u06a9\u06be\u0627\u0626\u06cc \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u062c\u0628 \u06a9\u0648\u0626\u06cc \u062e\u0644\u0644 \u0622\u062a\u0627 \u06c1\u06d2 \u062a\u0648 \u062c\u0644\u062f\u06cc \u0628\u06cc\u062f\u0627\u0631 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062a\u06cc\u0627\u0631 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06cc\u0646\u0688\u0631\u0627\u0626\u06cc\u0688 \u0627\u06cc\u06a9 \u0637\u0631\u06cc\u0642\u06c1 \u06a9\u0627\u0631 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0633\u06d2 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0646\u06cc\u0646\u062f \u06a9\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u062f\u0627\u0646\u0627 \u062c\u06cc\u0633\u06d2 \u06c1\u06cc \u062c\u0627\u06af\u062a\u06d2 \u0631\u06c1\u0646\u06d2 \u06a9\u06cc \u06a9\u0648\u0626\u06cc \u0648\u062c\u06c1 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2 \u0633\u0633\u0679\u0645 \u06a9\u0648 \u0645\u0639\u0637\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u06a9\u0648\u0634\u0634 \u06a9\u0631\u06d2 \u06af\u0627\u06d4 \u06a9\u0648\u0626\u06cc \u0628\u06be\u06cc \u0686\u06cc\u0632 \u062c\u0633 \u06a9\u0648 \u0686\u0644\u062a\u06d2 \u0631\u06c1\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 CPU \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648 \u0627\u0633\u06d2 \u0648\u0627\u0636\u062d \u0637\u0648\u0631 \u067e\u0631 \u06cc\u06c1 \u06a9\u06c1\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u060c \u0627\u06cc\u06a9 \u0648\u06cc\u06a9 \u0627\u067e \u0633\u0648\u0631\u0633 \u06a9\u0648 \u067e\u06a9\u0691 \u06a9\u0631 (\u06a9\u0631\u0646\u0644 \u06a9\u06cc \u0627\u0635\u0637\u0644\u0627\u062d \u062c\u0633\u06d2 \u0627\u06cc\u0646\u0688\u0631\u0627\u0626\u06cc\u0688 \u0648\u06cc\u06a9 \u0627\u067e \u0644\u0627\u06a9 \u06a9\u06c1\u062a\u0627 \u06c1\u06d2)\u06d4 \u062f\u0627\u0646\u0627 \u0627\u0633 \u0648\u0642\u062a \u062a\u06a9 \u0645\u0639\u0637\u0644 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u0627\u0646\u06a9\u0627\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0628 \u062a\u06a9 \u06a9\u06c1 \u06a9\u0645 \u0627\u0632 \u06a9\u0645 \u0627\u06cc\u06a9 \u0648\u06cc\u06a9 \u0627\u067e \u0633\u0648\u0631\u0633 \u0641\u0639\u0627\u0644 \u06c1\u0648\u06d4<\/p>\n<pre><code class=\"language-plaintext\"> Screen off\n     |\n     v\n Any active wakeup sources? == yes ==> CPU stays awake\n     |\n     no\n     |\n     v\n Kernel suspends CPU\n     |\n     v\n Interrupt (alarm, network packet, button press)\n     |\n     v\n CPU resumes, driver or framework takes a wake lock to handle the event\n<\/code><\/pre>\n<p>\u0627\u0648\u067e\u0631 \u062f\u06cc\u0627 \u06af\u06cc\u0627 \u062e\u0627\u06a9\u06c1 \u0627\u0633\u06a9\u0631\u06cc\u0646 \u0622\u0641 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646 \u062f\u0627\u0646\u0627 \u06a9\u06d2 \u0628\u0627\u0631 \u0628\u0627\u0631 \u06a9\u06cc\u06d2 \u062c\u0627\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0641\u06cc\u0635\u0644\u0648\u06ba \u06a9\u0648 \u062f\u06a9\u06be\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u062c\u0628 \u062a\u06a9 \u0648\u06cc\u06a9 \u0627\u067e \u06a9\u0627 \u0630\u0631\u06cc\u0639\u06c1 \u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06c1\u062a\u0627 \u06c1\u06d2\u060c \u0633\u06cc \u067e\u06cc \u06cc\u0648 \u0686\u0644\u062a\u0627 \u0631\u06c1\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u06a9\u0686\u06be \u0646\u06c1\u06cc\u06ba \u0631\u06a9\u06be\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u0633\u0633\u0679\u0645 \u0627\u0633 \u0648\u0642\u062a \u062a\u06a9 \u0645\u0648\u0642\u0648\u0641 \u0631\u06c1\u06d2 \u06af\u0627 \u062c\u0628 \u062a\u06a9 \u06a9\u06c1 \u06c1\u0627\u0631\u0688 \u0648\u06cc\u0626\u0631 \u0645\u06cc\u06ba \u062e\u0644\u0644 \u0646\u06c1 \u0622\u062c\u0627\u0626\u06d2\u06d4 \u062c\u0628 \u0622\u0644\u06c1 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0634\u0631\u0648\u0639 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u060c \u06a9\u0648\u0688 \u062c\u0648 \u0645\u062f\u0627\u062e\u0644\u062a \u06a9\u0648 \u06c1\u06cc\u0646\u0688\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 \u0627\u06cc\u06a9 \u0645\u062e\u062a\u0635\u0631 \u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u062d\u0627\u0635\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062a\u0627\u06a9\u06c1 \u06a9\u0631\u0646\u0644 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0645\u0639\u0637\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u06a9\u0648\u0634\u0634 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0627\u067e\u0646\u0627 \u06a9\u0627\u0645 \u0645\u06a9\u0645\u0644 \u06a9\u0631 \u0633\u06a9\u06d2\u06d4<\/p>\n<p>\u0627\u06c1\u0645 \u062a\u0641\u0635\u06cc\u0644 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u062c\u0627\u06af\u0646\u06d2 \u06a9\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4 \u0627\u0633\u06a9\u0631\u06cc\u0646 \u0622\u0641 \u06c1\u0648\u0646\u06d2 \u067e\u0631 \u0622\u067e \u06a9\u06d2 \u06a9\u0648\u0688 \u06a9\u0648 CPU \u06a9\u0627 \u0648\u0642\u062a \u0646\u06c1\u06cc\u06ba \u0645\u0644\u062a\u0627 \u062c\u0628 \u062a\u06a9 \u06a9\u06c1 \u0627\u0633 \u06a9\u06cc \u0628\u062c\u0627\u0626\u06d2 \u06a9\u0648\u0626\u06cc \u0686\u06cc\u0632 \u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u06a9\u0648 \u067e\u06a9\u0691\u06d2 \u06c1\u0648\u0626\u06d2 \u06c1\u0648\u06d4<\/p>\n<h2 id=\"heading-what-a-wake-lock-does\">\u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u06a9\u06cc\u0627 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/h2>\n<p>\u0627\u06cc\u06a9 \u0627\u06cc\u067e \u0644\u06cc\u0648\u0644 \u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u06cc\u06ba: <code>PowerManagerService<\/code>\u0633\u0633\u0679\u0645 \u0633\u0631\u0648\u0633\u0632 \u0627\u0646\u062f\u0631\u0648\u0646\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0686\u0644 \u0631\u06c1\u06cc \u06c1\u06cc\u06ba\u06d4 <code>system_server<\/code>. \u062c\u0628 \u0627\u06cc\u067e \u06a9\u0627\u0644 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 <code>acquire()<\/code>\u06a9\u0627\u0644 \u0628\u0627\u0626\u0646\u0688\u0631 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0645\u0646\u0627\u0633\u0628 \u0633\u0631\u0648\u0633 \u062a\u06a9 \u062c\u0627\u062a\u06cc \u06c1\u06d2\u060c \u062c\u0648 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0648 UID\u060c \u0679\u06cc\u06af \u0633\u0679\u0631\u0646\u06af\u060c \u0627\u0648\u0631 \u0644\u0627\u06a9 \u0679\u0627\u0626\u067e \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0644\u0627\u06af \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 <code>PowerManagerService<\/code> \u062a\u0645\u0627\u0645 \u0627\u06cc\u067e \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u0648\u06ba \u06a9\u0648 \u062c\u0645\u0639 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u06cc\u067e \u06a9\u06cc \u062a\u0645\u0627\u0645 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u0648\u06ba \u06a9\u06cc \u062c\u0627\u0646\u0628 \u0633\u06d2 \u0627\u06cc\u06a9 \u0648\u0627\u062d\u062f \u06a9\u0631\u0646\u0644 \u0648\u06cc\u06a9 \u0627\u067e \u0633\u0648\u0631\u0633 \u0631\u06a9\u06be\u062a\u0627 \u06c1\u06d2\u06d4 \u0622\u062e\u0631\u06cc \u0627\u06cc\u067e \u0644\u06cc\u0648\u0644 \u0644\u0627\u06a9 \u06a9\u06d2 \u062c\u0627\u0631\u06cc \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f\u060c \u06a9\u0631\u0646\u0644 \u0648\u06cc\u06a9 \u0633\u0648\u0631\u0633 \u06a9\u0648 \u062d\u0630\u0641 \u06a9\u0631 \u062f\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0622\u0644\u06c1 \u0645\u0639\u0637\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0622\u0632\u0627\u062f \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0633 \u0688\u06cc\u0632\u0627\u0626\u0646 \u06a9\u06d2 \u062f\u0648 \u0642\u0627\u0628\u0644 \u0641\u06c1\u0645 \u0646\u062a\u0627\u0626\u062c \u06c1\u06cc\u06ba\u06d4 \u0633\u0628 \u0633\u06d2 \u067e\u06c1\u0644\u06d2\u060c \u0633\u0633\u0679\u0645 \u06a9\u0648 \u0628\u062e\u0648\u0628\u06cc \u0645\u0639\u0644\u0648\u0645 \u06c1\u0648\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u06a9\u0648\u0646 \u0633\u06cc \u0627\u06cc\u067e\u0633 \u06c1\u0631 \u0644\u0627\u06a9 \u06a9\u0648 \u067e\u06a9\u0691\u06d2 \u06c1\u0648\u0626\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u06a9\u062a\u0646\u06cc \u062f\u06cc\u0631 \u062a\u06a9\u060c \u062c\u0633 \u0637\u0631\u062d \u0628\u06cc\u0679\u0631\u06cc \u06a9\u06d2 \u0627\u0639\u062f\u0627\u062f\u0648\u0634\u0645\u0627\u0631 \u0627\u0648\u0631 \u067e\u0644\u06d2 \u06a9\u0646\u0633\u0648\u0644 \u0648\u0627\u0626\u0679\u0644\u0632 \u0627\u06cc\u067e\u0633 \u067e\u0631 \u0627\u0644\u0632\u0627\u0645 \u0644\u06af\u0627 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u062f\u0648\u0633\u0631\u0627 <code>PowerManagerService<\/code> \u06c1\u0645 \u06c1\u0631 \u062a\u0627\u0644\u0627 \u06a9\u0648 \u0628\u0627\u0626\u0646\u0688\u0631 \u0627\u06cc\u06af\u0632\u0679 \u0646\u0648\u0679\u06cc\u0641\u06a9\u06cc\u0634\u0646 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u06cc\u06a9 \u067e\u0631\u0648\u0633\u06cc\u0633 \u0633\u06d2 \u0645\u0646\u0633\u0644\u06a9 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u062c\u0628 \u0639\u0645\u0644 \u062e\u062a\u0645 \u06c1\u0648 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u0646\u0638\u0627\u0645 \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u0627\u0633\u06d2 \u063a\u06cc\u0631 \u0645\u0642\u0641\u0644 \u06a9\u0631 \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4 \u0644\u06c1\u0630\u0627 \u0644\u06cc\u06a9 \u0639\u0645\u0644 \u06a9\u06cc \u0632\u0646\u062f\u06af\u06cc \u062a\u06a9 \u0645\u062d\u062f\u0648\u062f \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u067e\u06cc\u0634 \u0645\u0646\u0638\u0631 \u06a9\u06cc \u062e\u062f\u0645\u0627\u062a \u06a9\u0648 \u0686\u0644\u0627\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u06cc\u0627 \u0633\u0633\u0679\u0645 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06c1 \u0641\u0639\u0627\u0644 \u0631\u06a9\u06be\u06d2 \u062c\u0627\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0639\u0645\u0644 \u06a9\u0626\u06cc \u06af\u06be\u0646\u0679\u0648\u06ba \u062a\u06a9 \u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06c1 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h2 id=\"heading-the-types-of-wake-locks\">\u0648\u06cc\u06a9 \u0644\u0627\u06a9\u0633 \u06a9\u06cc \u0627\u0642\u0633\u0627\u0645<\/h2>\n<p>\u06a9\u06c1 <code>PowerManager<\/code> \u06a9\u0644\u0627\u0633 \u06a9\u0626\u06cc \u0644\u0627\u06a9\u0646\u06af \u0644\u06cc\u0648\u0644\u0632 \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 \u0627\u0646 \u0645\u06cc\u06ba \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u062a\u0631 \u0641\u0631\u0633\u0648\u062f\u06c1 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0627\u06cc\u067e \u0688\u0648\u06cc\u0644\u067e\u0631\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0635\u0631\u0641 \u0627\u06cc\u06a9 \u0686\u06cc\u0632 \u0648\u0627\u0642\u0639\u06cc \u0627\u06c1\u0645 \u06c1\u06d2:<\/p>\n<table>\n<thead>\n<tr>\n<th>\u067e\u0627\u0646\u06cc \u06a9\u06cc \u0633\u0637\u062d<\/th>\n<th>\u0633\u06cc \u067e\u06cc \u06cc\u0648 \u06a9\u0648 \u0622\u0646 \u0631\u06a9\u06be\u06cc\u06ba<\/th>\n<th>\u0627\u0633\u06a9\u0631\u06cc\u0646 \u06a9\u0648 \u0622\u0646 \u0631\u06a9\u06be\u06cc\u06ba<\/th>\n<th>\u0635\u0648\u0631\u062a \u062d\u0627\u0644<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>PARTIAL_WAKE_LOCK<\/code><\/td>\n<td>\u06c1\u0627\u06ba<\/td>\n<td>\u0646\u06c1\u06cc\u06ba<\/td>\n<td>\u0627\u0628\u06be\u06cc \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u06cc\u06c1 \u0648\u0627\u062d\u062f \u0686\u06cc\u0632 \u06c1\u06d2 \u062c\u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u062a\u0631 \u0627\u06cc\u067e\u0633 \u06a9\u0648 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u06d4<\/td>\n<\/tr>\n<tr>\n<td><code>SCREEN_DIM_WAKE_LOCK<\/code><\/td>\n<td>\u06c1\u0627\u06ba<\/td>\n<td>\u06c1\u0627\u06ba\u060c \u0627\u0646\u062f\u06be\u06cc\u0631\u0627 \u06c1\u0648 \u06af\u06cc\u0627\u06d4<\/td>\n<td>API 17 \u0633\u06d2 \u0641\u0631\u0633\u0648\u062f\u06c1<\/td>\n<\/tr>\n<tr>\n<td><code>SCREEN_BRIGHT_WAKE_LOCK<\/code><\/td>\n<td>\u06c1\u0627\u06ba<\/td>\n<td>\u062c\u06cc \u06c1\u0627\u06ba\u060c \u067e\u0648\u0631\u06cc \u0686\u0645\u06a9<\/td>\n<td>API 13 \u0633\u06d2 \u0641\u0631\u0633\u0648\u062f\u06c1<\/td>\n<\/tr>\n<tr>\n<td><code>FULL_WAKE_LOCK<\/code><\/td>\n<td>\u06c1\u0627\u06ba<\/td>\n<td>\u06c1\u0627\u06ba\u060c \u06a9\u06cc \u0628\u0648\u0631\u0688 \u0628\u06cc\u06a9 \u0644\u0627\u0626\u0679 \u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/td>\n<td>API 17 \u0633\u06d2 \u0641\u0631\u0633\u0648\u062f\u06c1<\/td>\n<\/tr>\n<tr>\n<td><code>PROXIMITY_SCREEN_OFF_WAKE_LOCK<\/code><\/td>\n<td>\u0646\u06c1\u06cc\u06ba<\/td>\n<td>\u0642\u0631\u0628\u062a \u06a9\u06d2 \u0633\u06cc\u0646\u0633\u0631 \u06a9\u06d2 \u0642\u0631\u06cc\u0628 \u0627\u0633\u06a9\u0631\u06cc\u0646 \u0622\u0641 \u06c1\u0648 \u062c\u0627\u062a\u06cc \u06c1\u06d2\u06d4<\/td>\n<td>\u0641\u06cc \u0627\u0644\u062d\u0627\u0644 \u0627\u06cc\u067e \u06a9\u0627\u0644\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u067e\u06c1\u0644\u0627 \u06a9\u0627\u0644\u0645 \u0648\u06c1 \u0645\u0633\u062a\u0642\u0644 \u06c1\u06d2 \u062c\u0633\u06d2 \u0622\u067e \u06af\u0632\u0631 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba\u06d4 <code>newWakeLock()<\/code>\u0627\u06af\u0644\u06d2 \u062f\u0648 \u0628\u06cc\u0627\u0646 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06c1 \u062a\u0627\u0644\u0627 \u06a9\u0648 \u06a9\u06cc\u0627 \u0637\u0627\u0642\u062a \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u0633\u06a9\u0631\u06cc\u0646 \u0633\u06d2 \u0645\u062a\u0639\u0644\u0642\u06c1 \u0644\u06cc\u0648\u0644\u0632 \u0641\u0631\u0633\u0648\u062f\u06c1 \u06c1\u06cc\u06ba \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u0627\u06cc\u067e \u0635\u0627\u0631\u0641 \u06a9\u06d2 \u062c\u0627\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f \u0628\u06be\u06cc\u060c \u0688\u0633\u067e\u0644\u06d2 \u06a9\u0648 \u0622\u0646 \u0631\u06a9\u06be\u0646\u06d2 \u0627\u0648\u0631 \u0628\u06cc\u0679\u0631\u06cc \u062e\u062a\u0645 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f \u0628\u06be\u06cc \u0627\u0633\u06cc \u0633\u0637\u062d \u067e\u0631 \u0631\u06c1\u06d2 \u06af\u06cc\u06d4<\/p>\n<p>\u0627\u0633\u06a9\u0631\u06cc\u0646 \u06a9\u0648 \u0622\u0646 \u0686\u06be\u0648\u0691\u0646\u06d2 \u06a9\u0627 \u0627\u06cc\u06a9 \u0645\u062a\u0628\u0627\u062f\u0644 \u06c1\u06d2\u06d4 <code>FLAG_KEEP_SCREEN_ON<\/code> \u06a9\u06be\u0691\u06a9\u06cc \u06a9\u06d2 \u062c\u06be\u0646\u0688\u06d2 (\u06cc\u0627 <code>android:keepScreenOn<\/code> \u0644\u06d2 \u0622\u0624\u0679 \u0645\u06cc\u06ba) \u0648\u0646\u0688\u0648 \u0645\u06cc\u0646\u06cc\u062c\u0631 \u0648\u0646\u0688\u0648 \u06a9\u06cc \u0645\u0631\u0626\u06cc\u062a \u0633\u06d2 \u0645\u0646\u0633\u0644\u06a9 \u06c1\u06d2\u060c \u0644\u06c1\u0630\u0627 \u06cc\u06c1 \u0644\u06cc\u06a9 \u0646\u06c1\u06cc\u06ba \u06c1\u0648 \u0633\u06a9\u062a\u0627\u06d4 \u0642\u0631\u0628\u062a \u06a9\u0627 \u062a\u0627\u0644\u0627 \u0645\u0635\u0631\u0648\u0641 \u0627\u0633\u06a9\u0631\u06cc\u0646 \u06a9\u0627 \u0627\u06cc\u06a9 \u062e\u0627\u0635 \u0645\u0639\u0627\u0645\u0644\u06c1 \u06c1\u06d2\u06d4 \u06c1\u0631 \u0686\u06cc\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u062c\u062f\u06cc\u062f \u0627\u06cc\u0646\u0688\u0631\u0627\u0626\u06cc\u0688 \u0645\u06cc\u06ba\u060c &quot;\u0648\u06cc\u06a9 \u0644\u0627\u06a9&#8221; \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2: <code>PARTIAL_WAKE_LOCK<\/code>\u0627\u0633 \u0645\u0636\u0645\u0648\u0646 \u06a9\u0627 \u0628\u0642\u06cc\u06c1 \u062d\u0635\u06c1 \u0627\u0633\u06cc \u067e\u0631 \u0645\u0631\u06a9\u0648\u0632 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-how-to-acquire-and-release-a-wake-lock\">\u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u06a9\u0648 \u06a9\u06cc\u0633\u06d2 \u062d\u0627\u0635\u0644 \u06a9\u0631\u06cc\u06ba \u0627\u0648\u0631 \u062c\u0627\u0631\u06cc \u06a9\u0631\u06cc\u06ba\u06d4<\/h2>\n<p>\u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0622\u067e \u06a9\u0648 \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2: <code>WAKE_LOCK<\/code> \u0627\u067e\u0646\u06d2 \u0645\u06cc\u0646\u06cc \u0641\u06cc\u0633\u0679 \u0645\u06cc\u06ba \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u06ba\u06d4 \u06cc\u06c1 \u0627\u06cc\u06a9 \u0639\u0627\u0645 \u0627\u062c\u0627\u0632\u062a \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u0646\u0633\u0679\u0627\u0644\u06cc\u0634\u0646 \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646 \u0627\u0634\u0627\u0631\u06c1 \u06a9\u06cc\u06d2 \u0628\u063a\u06cc\u0631 \u062f\u06cc \u062c\u0627\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-xml\"><uses-permission android:name=\"android.permission.WAKE_LOCK\"\/>\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u0644\u0627\u0626\u0646 \u0627\u0639\u0644\u0627\u0646 \u06a9\u0631\u062a\u06cc \u06c1\u06d2 \u06a9\u06c1 \u0627\u06cc\u067e \u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u06a9\u0648 \u0631\u0648\u06a9 \u0633\u06a9\u062a\u06cc \u06c1\u06d2\u06d4 \u0627\u0633 \u06a9\u06d2 \u0628\u063a\u06cc\u0631\u060c <code>acquire()<\/code> \u067e\u06be\u06cc\u0646\u06a9\u0646\u0627 <code>SecurityException<\/code>. \u0686\u0648\u0646\u06a9\u06c1 \u0627\u062c\u0627\u0632\u062a \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u0645\u0644 \u062c\u0627\u062a\u06cc \u06c1\u06d2\u060c \u0627\u0633 \u0644\u06cc\u06d2 \u0635\u0627\u0631\u0641\u06cc\u0646 \u06a9\u0648 \u0627\u0646\u062f\u0627\u0632\u06c1 \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u062a\u0627 \u06a9\u06c1 \u0622\u067e \u06a9\u06cc \u0627\u06cc\u067e \u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631 \u0631\u06c1\u06cc \u06c1\u06d2 \u062c\u0628 \u062a\u06a9 \u06a9\u06c1 \u0648\u06c1 \u0628\u06cc\u0679\u0631\u06cc \u06a9\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc \u062c\u0627\u0646\u0686 \u0646\u06c1 \u06a9\u0631\u06cc\u06ba\u06d4 \u06cc\u06c1 \u0635\u0627\u0631\u0641\u06cc\u0646 \u06a9\u06d2 \u0645\u062d\u062a\u0627\u0637 \u0631\u06c1\u0646\u06d2 \u06a9\u06cc \u0627\u06cc\u06a9 \u0627\u0648\u0631 \u0648\u062c\u06c1 \u06c1\u06d2\u06d4<\/p>\n<p>\u0633\u0628 \u0633\u06d2 \u0628\u0646\u06cc\u0627\u062f\u06cc \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u0645\u0646\u062f\u0631\u062c\u06c1 \u0630\u06cc\u0644 \u06c1\u06d2:<\/p>\n<pre><code class=\"language-kotlin\">val powerManager = context.getSystemService(PowerManager::class.java)\nval wakeLock = powerManager.newWakeLock(\n    PowerManager.PARTIAL_WAKE_LOCK,\n    \"myapp:upload\"\n)\n\nwakeLock.acquire(10 * 60 * 1000L) \/\/ 10 minutes\nuploadPendingFiles()\nwakeLock.release()\n<\/code><\/pre>\n<p>\u06a9\u0648\u0688 \u06c1\u06d2\u06d4 <code>PowerManager<\/code> \u0633\u0633\u0679\u0645 \u0633\u0631\u0648\u0633 \u0628\u0646\u0627\u0626\u06cc\u06ba <code>WakeLock<\/code> \u062c\u0632\u0648\u06cc \u0633\u0637\u062d\u0648\u06ba \u0627\u0648\u0631 \u0679\u06cc\u06af\u0632 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u06cc\u06a9 \u0622\u0628\u062c\u06cc\u06a9\u0679\u06d4 \u062e\u0648\u062f \u0633\u06d2 \u06a9\u0633\u06cc \u0686\u06cc\u0632 \u06a9\u0648 \u0628\u0646\u0627\u0646\u06d2 \u0633\u06d2 \u06a9\u0686\u06be \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u062a\u0627\u06d4 CPU \u0635\u0631\u0641 \u0627\u0633 \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u0628\u06cc\u062f\u0627\u0631 \u06c1\u06d2: <code>acquire()<\/code> \u0627\u0648\u0631 <code>release()<\/code>.<\/p>\n<p>\u0679\u06cc\u06af <code>\"myapp:upload\"<\/code> \u0645\u06cc\u06ba \u0638\u0627\u06c1\u0631 \u06c1\u0648\u062a\u0627 \u06c1\u06d2 <code>dumpsys<\/code>\u0622\u067e \u06a9\u0648 \u0628\u06cc\u0679\u0631\u06cc \u06c1\u0633\u0679\u0648\u0631\u06cc\u0646 \u0627\u0648\u0631 \u067e\u0644\u06d2 \u06a9\u0646\u0633\u0648\u0644 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0627\u06cc\u067e\u0633 \u0627\u0648\u0631 \u0645\u062e\u0635\u0648\u0635 \u06a9\u0627\u0645\u0648\u06ba \u062f\u0648\u0646\u0648\u06ba \u06a9\u06cc \u0634\u0646\u0627\u062e\u062a \u06a9\u0631\u0646\u06cc \u06c1\u0648\u06af\u06cc\u06d4<\/p>\n<p>\u06a9\u06c1 <code>app:component<\/code> \u0641\u0627\u0631\u0645\u06cc\u0679 \u06af\u0648\u06af\u0644 \u06a9\u06cc \u0637\u0631\u0641 \u0633\u06d2 \u062a\u062c\u0648\u06cc\u0632 \u06a9\u0631\u062f\u06c1 \u0627\u06cc\u06a9 \u06a9\u0646\u0648\u0646\u0634\u0646 \u06c1\u06d2 \u0627\u0648\u0631 \u0688\u06cc\u0628\u06af\u0646\u06af \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646 \u062d\u0642\u06cc\u0642\u06cc \u0648\u0642\u062a \u06a9\u06cc \u0628\u0686\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u062f\u0639\u0648\u06cc \u06a9\u0631\u062a\u0627 \u06c1\u06d2 <code>acquire()<\/code> \u0645\u0644\u06cc \u0633\u06cc\u06a9\u0646\u0688 \u0645\u06cc\u06ba \u0679\u0627\u0626\u0645 \u0622\u0624\u0679\u06d4 \u0627\u06af\u0631 \u062a\u0627\u0644\u0627 10 \u0645\u0646\u0679 \u06a9\u06d2 \u0628\u0639\u062f \u0628\u06be\u06cc \u0631\u06c1\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u0633\u0633\u0679\u0645 \u0627\u0633\u06d2 \u06a9\u06be\u0648\u0644 \u062f\u06d2 \u06af\u0627\u06d4<\/p>\n<p>\u06cc\u06c1 \u0679\u06a9\u0691\u0627 \u062f\u0631\u0633\u062a \u0644\u06af\u062a\u0627 \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u0627\u0633 \u0645\u06cc\u06ba \u0627\u06cc\u06a9 \u062d\u0642\u06cc\u0642\u06cc \u0628\u06af \u06c1\u06d2\u06d4 <code>uploadPendingFiles()<\/code> \u067e\u06be\u06cc\u0646\u06a9\u0646\u0627\u060c <code>release()<\/code> \u06a9\u0628\u06be\u06cc \u0646\u06c1\u06cc\u06ba \u0686\u0644\u062a\u0627\u06d4 \u0679\u0627\u0626\u0645 \u0622\u0624\u0679 \u0646\u0642\u0635\u0627\u0646 \u06a9\u0648 10 \u0645\u0646\u0679 \u062a\u06a9 \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u067e\u06be\u0631 \u0628\u06be\u06cc \u06c1\u0631 \u062e\u0631\u0627\u0628\u06cc \u06a9\u06d2 \u0644\u06cc\u06d2 \u0622\u067e \u06a9\u06cc \u0628\u06cc\u0679\u0631\u06cc 10 \u0645\u0646\u0679 \u062a\u06a9 \u062e\u062a\u0645 \u06c1\u0648 \u062c\u0627\u0626\u06d2 \u06af\u06cc\u06d4 \u0627\u06af\u0644\u0627 \u062d\u0635\u06c1 \u0628\u062a\u0627\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0627\u0633 \u0645\u0633\u0626\u0644\u06d2 \u06a9\u0648 \u06a9\u06cc\u0633\u06d2 \u062d\u0644 \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2 \u0627\u0648\u0631 \u062f\u0648\u0633\u0631\u06d2 \u06a9\u0648\u0646 \u0633\u06d2 \u067e\u06be\u0646\u062f\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h2 id=\"heading-how-reference-counting-works\">\u062d\u0648\u0627\u0644\u06c1 \u06af\u0646\u062a\u06cc \u06a9\u06cc\u0633\u06d2 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4<\/h2>\n<p>\u0648\u06cc\u06a9 \u0644\u0627\u06a9\u0633 \u0628\u0637\u0648\u0631 \u0688\u06cc\u0641\u0627\u0644\u0679 \u062d\u0648\u0627\u0644\u06c1 \u0634\u0645\u0627\u0631 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06c1\u0631 \u06a9\u0627\u0644 \u06c1\u06d2\u06d4 <code>acquire()<\/code> \u0627\u0646\u062f\u0631\u0648\u0646\u06cc \u06a9\u0627\u0624\u0646\u0679\u0631 \u06a9\u0648 \u0628\u0691\u06be\u0627\u062a\u0627 \u06c1\u06d2\u06d4 <code>release()<\/code> \u06c1\u0645 \u0627\u0633\u06d2 \u06a9\u0645 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u062a\u0627\u0644\u0627 \u0635\u0631\u0641 \u0627\u0633 \u0648\u0642\u062a \u0635\u0627\u0641 \u06c1\u0648\u062a\u0627 \u06c1\u06d2 \u062c\u0628 \u06a9\u0627\u0624\u0646\u0679\u0631 0 \u062a\u06a9 \u067e\u06c1\u0646\u0686 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-kotlin\">wakeLock.acquire(60_000L)  \/\/ count = 1, lock held\nwakeLock.acquire(60_000L)  \/\/ count = 2\nwakeLock.release()         \/\/ count = 1, still held\nwakeLock.release()         \/\/ count = 0, lock released\nwakeLock.release()         \/\/ throws RuntimeException: WakeLock under-locked\n<\/code><\/pre>\n<p>\u067e\u06c1\u0644\u06cc \u062f\u0648 \u06a9\u0627\u0644\u06cc\u06ba \u06af\u0646\u062a\u06cc \u06a9\u0648 2 \u062a\u06a9 \u0644\u06d2 \u062c\u0627\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u067e\u06c1\u0644\u06cc \u0631\u06cc\u0644\u06cc\u0632 \u0627\u0633\u06d2 \u0648\u0627\u067e\u0633 \u0627\u06cc\u06a9 \u0645\u06cc\u06ba \u0648\u0627\u067e\u0633 \u06a9\u0631 \u062f\u06d2 \u06af\u06cc\u060c \u0627\u0633 \u0644\u06cc\u06d2 \u0627\u06af\u0631 \u0622\u067e \u06a9\u0627 \u06a9\u0648\u0688 \u0627\u0633\u06d2 &quot;\u0631\u06cc\u0644\u06cc\u0632&#8221; \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0628 \u0628\u06be\u06cc \u062a\u0627\u0644\u0627 \u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06c1\u06d2 \u06af\u0627\u06d4<\/p>\n<p>\u062f\u0648\u0633\u0631\u06cc \u0631\u06cc\u0644\u06cc\u0632 \u0645\u06cc\u06ba \u0627\u0635\u0644 \u0645\u06cc\u06ba \u0644\u0627\u06a9 \u06c1\u0679\u0627 \u062f\u06cc\u0627 \u062c\u0627\u0626\u06d2 \u06af\u0627\u06d4 \u062a\u06cc\u0633\u0631\u06cc \u0631\u06cc\u0644\u06cc\u0632 \u062a\u06a9 \u0631\u06c1\u0627\u0626\u06cc \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u0686\u06be \u0646\u06c1\u06cc\u06ba \u0628\u0686\u0627 \u062a\u06be\u0627\u06d4 <code>RuntimeException<\/code> \u067e\u06cc\u063a\u0627\u0645 &quot;\u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u0627\u0646\u0688\u0631 \u0644\u0627\u06a9&#8221; \u0638\u0627\u06c1\u0631 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u067e\u06cc\u062f\u0627\u0648\u0627\u0631 \u0645\u06cc\u06ba \u062a\u0646\u0627\u0632\u0639\u06c1 \u06c1\u06d2\u060c \u0644\u06c1\u0630\u0627 \u06a9\u0686\u06be \u0688\u0648\u06cc\u0644\u067e\u0631\u0632 \u0644\u06cc\u0628\u0632 \u0634\u0631\u0648\u0639 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba. <code>release()<\/code> \u06a9\u0648 <code>try<\/code> \u0628\u0644\u0627\u06a9 \u06a9\u0631\u06cc\u06ba \u06cc\u0627 \u0686\u06cc\u06a9 \u06a9\u0631\u06cc\u06ba\u06d4 <code>isHeld<\/code> \u067e\u06c1\u0644\u06d2<\/p>\n<p>\u062d\u0648\u0627\u0644\u06c1 \u0634\u0645\u0627\u0631 \u0645\u0641\u06cc\u062f \u06c1\u06d2 \u062c\u0628 \u06a9\u0648\u0688 \u06a9\u06d2 \u0645\u062a\u0639\u062f\u062f \u0622\u0632\u0627\u062f \u0679\u06a9\u0691\u06d2 \u06a9\u0648\u0688 \u06a9\u06d2 \u0627\u06cc\u06a9 \u0679\u06a9\u0691\u06d2 \u06a9\u0627 \u0627\u0634\u062a\u0631\u0627\u06a9 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 <code>WakeLock<\/code> \u0627\u0639\u062a\u0631\u0627\u0636 \u06cc\u06c1 \u0627\u06cc\u06a9 \u0645\u0633\u0626\u0644\u06c1 \u0628\u0646 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u0627\u06af\u0631 \u062d\u0635\u0648\u0644 \u06a9\u06cc \u062a\u0639\u062f\u0627\u062f \u0627\u0648\u0631 \u0631\u06c1\u0627\u0626\u06cc \u06a9\u06d2 \u0627\u0648\u0642\u0627\u062a \u0645\u0645\u0627\u062b\u0644 \u0646\u06c1 \u06c1\u0648\u06ba\u06d4 \u0645\u062b\u0627\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631\u060c \u0627\u06af\u0631 \u0627\u06cc\u06a9 \u0641\u0646\u06a9\u0634\u0646 \u06a9\u0648 \u062f\u0648 \u0628\u0627\u0631 \u0628\u0644\u0627\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u062a\u06a9\u0645\u06cc\u0644 \u06a9\u0627\u0644 \u0628\u06cc\u06a9 \u0635\u0631\u0641 \u0627\u06cc\u06a9 \u0628\u0627\u0631 \u0639\u0645\u0644 \u0645\u06cc\u06ba \u0622\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0622\u067e \u062d\u0648\u0627\u0644\u06c1 \u06a9\u06cc \u06af\u0646\u062a\u06cc \u06a9\u0648 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06a9\u06d2 \u0628\u0646\u062f \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba: <code>setReferenceCounted(false)<\/code>\u0627\u0633 \u06a9\u06d2 \u0628\u0639\u062f\u060c \u0627\u06cc\u06a9 <code>release()<\/code> \u062a\u0627\u0644\u06d2 \u06a9\u0648 \u0635\u0627\u0641 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0633 \u0633\u06d2 \u0642\u0637\u0639 \u0646\u0638\u0631 \u06a9\u06c1 \u0627\u0633\u06d2 \u06a9\u062a\u0646\u06cc \u0628\u0627\u0631 \u062d\u0627\u0635\u0644 \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u062a\u06be\u0627\u06d4 \u062c\u0628 \u0627\u06cc\u06a9 \u062c\u0632\u0648 \u062a\u0627\u0644\u0627 \u06a9\u0627 \u0645\u0627\u0644\u06a9 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u06cc\u06c1 \u0627\u06a9\u062b\u0631 \u0627\u06cc\u06a9 \u0622\u0633\u0627\u0646 \u0645\u0627\u0688\u0644 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-common-ways-apps-leak-wake-locks\">\u0639\u0627\u0645 \u0637\u0631\u06cc\u0642\u06d2 \u0627\u06cc\u067e \u0644\u06cc\u06a9 \u0648\u06cc\u06a9 \u0644\u0627\u06a9<\/h2>\n<p>\u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u0644\u06cc\u06a9 \u062a\u0642\u0631\u06cc\u0628\u0627 \u06c1\u0645\u06cc\u0634\u06c1 \u06c1\u06cc \u067e\u06cc\u0679\u0631\u0646 \u06a9\u06cc \u0627\u06cc\u06a9 \u0686\u06be\u0648\u0679\u06cc \u062a\u0639\u062f\u0627\u062f \u0645\u06cc\u06ba \u0622\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0627\u0633 \u06a9\u0648 \u062a\u0633\u0644\u06cc\u0645 \u06a9\u0631\u0646\u0627 \u06a9\u0648\u0688 \u06a9\u06d2 \u062c\u0627\u0626\u0632\u0648\u06ba \u06a9\u0648 \u0632\u06cc\u0627\u062f\u06c1 \u0645\u0648\u062b\u0631 \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-exceptions-and-early-returns\">\u0645\u0633\u062a\u062b\u0646\u06cc\u0627\u062a \u0627\u0648\u0631 \u0627\u0628\u062a\u062f\u0627\u0626\u06cc \u0648\u0627\u067e\u0633\u06cc\u06d4<\/h3>\n<p>\u0627\u0648\u067e\u0631 \u06a9\u06cc \u0628\u0646\u06cc\u0627\u062f\u06cc \u0645\u062b\u0627\u0644 \u0633\u0628 \u0633\u06d2 \u0639\u0627\u0645 \u0644\u06cc\u06a9 \u06c1\u06d2\u06d4 \u06a9\u0648\u0626\u06cc \u0628\u06be\u06cc \u06a9\u0648\u0688 \u067e\u0627\u062a\u06be \u062c\u0648 \u062f\u0631\u0645\u06cc\u0627\u0646 \u06a9\u0633\u06cc \u0641\u0646\u06a9\u0634\u0646 \u06a9\u0648 \u062e\u062a\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 <code>acquire()<\/code> \u0627\u0648\u0631 <code>release()<\/code> \u0627\u06af\u0631 \u0622\u067e \u0631\u06cc\u0644\u06cc\u0632 \u0646\u06c1\u06cc\u06ba \u0686\u0644\u0627\u062a\u06d2 \u06c1\u06cc\u06ba \u062a\u0648 \u06cc\u06c1 \u0644\u06cc\u06a9 \u06c1\u0648 \u062c\u0627\u0626\u06d2 \u06af\u06cc\u06d4 \u0627\u0633 \u0645\u06cc\u06ba \u0645\u0633\u062a\u062b\u0646\u06cc\u0627\u062a \u0634\u0627\u0645\u0644 \u06c1\u06cc\u06ba\u06d4 <code>return<\/code> \u0627\u06cc\u06a9 \u0628\u06cc\u0627\u0646 \u062c\u0648 \u0628\u0639\u062f \u0645\u06cc\u06ba \u06a9\u0633\u06cc \u0627\u06cc\u0633\u06d2 \u0634\u062e\u0635 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06c1 \u0634\u0627\u0645\u0644 \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u062c\u0633 \u0646\u06d2 \u062a\u0627\u0644\u06d2 \u06a9\u0648 \u0646\u06c1\u06cc\u06ba \u062f\u06cc\u06a9\u06be\u0627\u060c \u0627\u0648\u0631 <code>break<\/code> \u06cc\u0627 <code>continue<\/code> \u0627\u0646\u062f\u0631\u0648\u0646\u06cc \u0644\u0648\u067e.<\/p>\n<pre><code class=\"language-kotlin\">fun syncContacts() {\n    wakeLock.acquire(5 * 60 * 1000L)\n    val account = accountStore.current() ?: return\n    api.pushContacts(account)\n    wakeLock.release()\n}\n<\/code><\/pre>\n<p>\u062c\u0628 \u0628\u06be\u06cc \u06a9\u0631\u0646\u0679 \u0627\u06a9\u0627\u0624\u0646\u0679 \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u062a\u0627 \u06c1\u06d2 \u062a\u0648 \u06cc\u06c1 \u0641\u06cc\u0686\u0631 \u0644\u0627\u06a9 \u06a9\u0648 \u0644\u06cc\u06a9 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 <code>return<\/code> \u0631\u06c1\u0627\u0626\u06cc \u0686\u06be\u0648\u0691 \u062f\u06cc\u06ba\u06d4 \u06cc\u06c1 \u0628\u06be\u06cc \u0644\u06cc\u06a9 \u06c1\u0648 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 <code>pushContacts()<\/code> \u0646\u06cc\u0679 \u0648\u0631\u06a9 \u06a9\u06cc \u0631\u0639\u0627\u06cc\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4 \u062f\u0648\u0646\u0648\u06ba \u0631\u0627\u0633\u062a\u06d2 \u0622\u0632\u0627\u062f\u0627\u0646\u06c1 \u0637\u0648\u0631 \u067e\u0631 \u0628\u06d2 \u0636\u0631\u0631 \u062f\u06a9\u06be\u0627\u0626\u06cc \u062f\u06cc\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0627\u06af\u0631\u0686\u06c1 \u0679\u0627\u0626\u0645 \u0622\u0624\u0679 \u0644\u06cc\u06a9 \u06a9\u06d2 \u0645\u0633\u062a\u0642\u0644 \u06c1\u0648\u0646\u06d2 \u06a9\u0627 \u0633\u0628\u0628 \u0646\u06c1\u06cc\u06ba \u0628\u0646\u062a\u0627\u060c \u0644\u06cc\u06a9\u0646 \u06a9\u0633\u06cc \u0628\u06be\u06cc \u0645\u0637\u0627\u0628\u0642\u062a \u067e\u0630\u06cc\u0631\u06cc \u06a9\u06cc \u0646\u0627\u06a9\u0627\u0645\u06cc \u06a9\u06d2 \u0646\u062a\u06cc\u062c\u06d2 \u0645\u06cc\u06ba \u0627\u0628 \u0628\u06be\u06cc 5 \u0645\u0646\u0679 \u062c\u0627\u06af\u0646\u06d2 \u06a9\u0627 \u0648\u0642\u062a \u06c1\u0648\u06af\u0627\u06d4<\/p>\n<h3 id=\"heading-asynchronous-work-that-outlives-the-caller\">\u063a\u06cc\u0631 \u0645\u0637\u0627\u0628\u0642\u062a \u067e\u0630\u06cc\u0631 \u0622\u067e\u0631\u06cc\u0634\u0646\u0632 \u062c\u0648 \u06a9\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u06a9\u0648 \u067e\u06cc\u0686\u06be\u06d2 \u0686\u06be\u0648\u0691 \u062f\u06cc\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/h3>\n<p>\u0648\u06cc\u06a9 \u0644\u0627\u06a9\u0633 \u0627\u06a9\u062b\u0631 \u0627\u06cc\u06a9 \u062c\u06af\u06c1 \u062d\u0627\u0635\u0644 \u06a9\u06cc\u06d2 \u062c\u0627\u062a\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u062f\u0648\u0633\u0631\u06cc \u062c\u06af\u06c1 \u06a9\u0627\u0644 \u0628\u06cc\u06a9 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u062c\u0627\u0631\u06cc \u06a9\u06cc\u06d2 \u062c\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0627\u06af\u0631 \u06a9\u0627\u0644 \u0628\u06cc\u06a9 \u067e\u0631 \u0639\u0645\u0644 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u0644\u0627\u06a9 \u062c\u0627\u0631\u06cc \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2 \u06af\u0627\u06d4<\/p>\n<pre><code class=\"language-kotlin\">fun startDownload(url: String) {\n    wakeLock.acquire()\n    downloader.enqueue(url, object : Callback {\n        override fun onComplete() {\n            wakeLock.release()\n        }\n        override fun onError(e: Throwable) {\n            log(\"download failed\", e)\n        }\n    })\n}\n<\/code><\/pre>\n<p>\u06cc\u06c1\u0627\u06ba \u062f\u0648 \u063a\u0644\u0637\u06cc\u0627\u06ba \u06c1\u06cc\u06ba\u06d4 \u0627\u06cc\u0631\u0631 \u06a9\u0627\u0644 \u0628\u06cc\u06a9 \u0644\u0627\u06a9 \u06a9\u0648 \u062c\u0627\u0631\u06cc \u06a9\u0631\u0646\u0627 \u0628\u06be\u0648\u0644 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u060c \u0644\u06c1\u0630\u0627 \u062c\u0628 \u0628\u06be\u06cc \u0688\u0627\u0624\u0646 \u0644\u0648\u0688 \u0646\u0627\u06a9\u0627\u0645 \u06c1\u0648\u062c\u0627\u062a\u0627 \u06c1\u06d2 \u062a\u0648 \u06cc\u06c1 \u0644\u0627\u06a9 \u06a9\u0648 \u0644\u06cc\u06a9 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u0648\u0631 \u0686\u0648\u0646\u06a9\u06c1 \u062a\u0627\u0644\u0627 \u0628\u063a\u06cc\u0631 \u06a9\u0633\u06cc \u0679\u0627\u0626\u0645 \u0622\u0624\u0679 \u06a9\u06d2 \u062d\u0627\u0635\u0644 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0633 \u0644\u06cc\u06d2 \u06cc\u06c1 \u0639\u0645\u0644 \u062e\u062a\u0645 \u06c1\u0648\u0646\u06d2 \u062a\u06a9 \u0644\u06cc\u06a9 \u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06c1\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06cc\u06a9 \u062a\u06cc\u0633\u0631\u0627\u060c \u06a9\u0645 \u0648\u0627\u0636\u062d \u062e\u0637\u0631\u06c1 \u06c1\u06d2\u06d4 <code>downloader<\/code> \u0627\u06af\u0631 \u0622\u067e \u06a9\u0627\u0644 \u0628\u06cc\u06a9 \u067e\u0631 \u06a9\u0627\u0644 \u06a9\u06cc\u06d2 \u0628\u063a\u06cc\u0631 \u06a9\u0633\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0648 \u0645\u0646\u0633\u0648\u062e \u06cc\u0627 \u062d\u0630\u0641 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba \u062a\u0648 \u0644\u0627\u06a9 \u0628\u06be\u06cc \u0644\u06cc\u06a9 \u06c1\u0648 \u062c\u0627\u0626\u06d2 \u06af\u0627\u06d4 \u06a9\u0648\u0626\u06cc \u0628\u06be\u06cc \u0688\u06cc\u0632\u0627\u0626\u0646 \u062c\u0633 \u06a9\u06cc \u0631\u06cc\u0644\u06cc\u0632 \u0635\u0627\u0631\u0641 \u06a9\u0648 \u0648\u0627\u067e\u0633 \u06a9\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u062a\u06cc\u0633\u0631\u06d2 \u0641\u0631\u06cc\u0642 \u067e\u0631 \u0627\u0646\u062d\u0635\u0627\u0631 \u06a9\u0631\u062a\u06cc \u06c1\u06d2 \u0627\u0633\u06d2 \u062d\u0641\u0627\u0638\u062a\u06cc \u062c\u0627\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0679\u0627\u0626\u0645 \u0622\u0624\u0679 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-unbalanced-reference-counts\">\u063a\u06cc\u0631 \u0645\u062a\u0648\u0627\u0632\u0646 \u062d\u0648\u0627\u0644\u06c1 \u0634\u0645\u0627\u0631<\/h3>\n<p>\u0627\u06af\u0631 \u0631\u06cc\u0644\u06cc\u0632 \u06a9\u06cc\u06d2 \u062c\u0627\u0646\u06d2 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0645\u0634\u062a\u0631\u06a9\u06c1 \u062d\u0648\u0627\u0644\u06c1 \u0634\u0645\u0627\u0631\u06cc \u06a9\u06d2 \u062a\u0627\u0644\u06d2 \u062d\u0627\u0635\u0644 \u06a9\u06cc\u06d2 \u062c\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0644\u0627\u06a9 \u06c1\u0648\u0644\u0688 \u0631\u06a9\u06be\u0627 \u062c\u0627\u0626\u06d2 \u06af\u0627 \u0686\u0627\u06c1\u06d2 \u062a\u0645\u0627\u0645 \u06a9\u0648\u0688 \u067e\u0627\u062a\u06be \u0644\u0627\u06a9 \u06a9\u0648 \u062c\u0627\u0631\u06cc \u06a9\u0631\u062a\u06d2 \u062f\u06a9\u06be\u0627\u0626\u06cc \u062f\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-kotlin\">class LocationTracker(private val wakeLock: PowerManager.WakeLock) {\n    fun onStart() {\n        wakeLock.acquire(30 * 60 * 1000L)\n        startUpdates()\n    }\n\n    fun onStop() {\n        stopUpdates()\n        wakeLock.release()\n    }\n}\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u06a9\u0644\u0627\u0633 \u0627\u0686\u06be\u06cc \u0637\u0631\u062d \u0633\u06d2 \u0645\u062a\u0648\u0627\u0632\u0646 \u0646\u0638\u0631 \u0622\u062a\u06cc \u06c1\u06d2\u06d4 \u0645\u0633\u0626\u0644\u06c1 \u0627\u0633 \u0648\u0642\u062a \u0638\u0627\u06c1\u0631 \u06c1\u0648\u062a\u0627 \u06c1\u06d2 \u062c\u0628: <code>onStart()<\/code> \u062f\u0648 \u0628\u0627\u0631 \u06a9\u0627\u0644 \u06a9\u06cc \u06af\u0626\u06cc (\u0645\u062b\u0627\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 \u0645\u06cc\u06ba \u062a\u0628\u062f\u06cc\u0644\u06cc \u06cc\u0627 \u0688\u067e\u0644\u06cc\u06a9\u06cc\u0679 \u0627\u0631\u0627\u062f\u06d2 \u06a9\u06d2 \u0628\u0639\u062f) <code>onStop()<\/code> \u0627\u0633\u06d2 \u0627\u06cc\u06a9 \u0628\u0627\u0631 \u06a9\u06c1\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u06af\u0646\u062a\u06cc 1 \u067e\u0631 \u062e\u062a\u0645 \u06c1\u0648\u062a\u06cc \u06c1\u06d2 \u0627\u0648\u0631 \u0679\u0627\u0626\u0645 \u0622\u0624\u0679 \u062e\u062a\u0645 \u06c1\u0648\u0646\u06d2 \u062a\u06a9 \u0644\u0627\u06a9 \u0631\u06a9\u06be\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u062d\u0648\u0627\u0644\u06c1 \u0634\u0645\u0627\u0631 \u06cc\u0627 \u0645\u062d\u0641\u0648\u0638 \u062d\u0635\u0648\u0644 \u06a9\u0648 \u0628\u0646\u062f \u06a9\u0631 \u062f\u06cc\u06ba\u06d4 <code>if (!wakeLock.isHeld)<\/code>\u06cc\u06c1 \u0627\u0633 \u0645\u062e\u0635\u0648\u0635 \u0645\u0633\u0626\u0644\u06d2 \u06a9\u0648 \u0679\u06be\u06cc\u06a9 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-broadcast-receivers-that-start-background-work\">\u0628\u0631\u0627\u0688\u06a9\u0627\u0633\u0679 \u0631\u06cc\u0633\u06cc\u0648\u0631 \u062c\u0648 \u067e\u0633 \u0645\u0646\u0638\u0631 \u06a9\u0627 \u06a9\u0627\u0645 \u0634\u0631\u0648\u0639 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/h3>\n<p>\u0633\u0633\u0679\u0645 \u0622\u067e \u06a9\u06d2 \u0644\u06cc\u06d2 \u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u0631\u06a9\u06be\u062a\u0627 \u06c1\u06d2\u06d4 <code>onReceive()<\/code> \u062f\u0648\u0691\u0648\u06d4 \u062c\u06cc\u0633\u06d2 \u06c1\u06cc <code>onReceive()<\/code> \u062c\u0628 \u06cc\u06c1 \u0648\u0627\u067e\u0633 \u0622\u062c\u0627\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u0627\u0633 \u06a9\u0627 \u0644\u0627\u06a9 \u062c\u0627\u0631\u06cc \u06c1\u0648\u062c\u0627\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u0633 \u0639\u0645\u0644 \u06a9\u0648 \u0628\u06cc\u06a9\u0627\u0631 \u0686\u06be\u0648\u0691 \u062f\u06cc\u0627 \u062c\u0627\u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06cc\u06a9 \u0639\u0627\u0645 \u063a\u0644\u0637\u06cc \u0627\u0644\u06af \u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u062d\u0627\u0635\u0644 \u06a9\u0631\u0646\u0627 \u06c1\u06d2\u06d4 <code>onReceive()<\/code>\u0627\u06cc\u06a9 \u062f\u06be\u0627\u06af\u06c1 \u0634\u0631\u0648\u0639 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u062f\u06be\u0627\u06af\u06d2 \u067e\u0631 \u0627\u06cc\u06a9 \u062a\u0627\u0644\u0627 \u062c\u0627\u0631\u06cc \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0631\u06cc\u0644\u06cc\u0632 \u0627\u0633 \u0648\u0642\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u062a\u06cc \u062c\u0628 \u06a9\u0648\u0626\u06cc \u0639\u0645\u0644 \u062e\u062a\u0645 \u06c1\u0648\u062c\u0627\u062a\u0627 \u06c1\u06d2 \u06cc\u0627 \u062a\u06be\u0631\u06cc\u0688 \u0645\u06cc\u06ba \u062e\u0644\u0644 \u067e\u0691\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0628\u0691\u06cc \u0639\u0645\u0631 <code>WakefulBroadcastReceiver<\/code> \u0627\u0633 \u067e\u06cc\u0679\u0631\u0646 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u0645\u062f\u062f\u06af\u0627\u0631 \u0628\u0646\u0627\u06cc\u0627 \u06af\u06cc\u0627 \u062a\u06be\u0627\u060c \u0644\u06cc\u06a9\u0646 \u0627\u0628 \u0627\u0646 \u0645\u0633\u0627\u0626\u0644 \u06a9\u06cc \u0648\u062c\u06c1 \u0633\u06d2 \u0641\u0631\u0633\u0648\u062f\u06c1 \u06c1\u06d2\u06d4 \u0627\u0633 \u0645\u0636\u0645\u0648\u0646 \u0645\u06cc\u06ba \u0628\u0639\u062f \u0645\u06cc\u06ba \u0646\u0626\u06d2 \u0645\u062a\u0628\u0627\u062f\u0644\u0627\u062a \u06a9\u0627 \u0627\u062d\u0627\u0637\u06c1 \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-holding-a-lock-across-unbounded-operations\">\u0644\u0627\u0645\u062d\u062f\u0648\u062f \u0622\u067e\u0631\u06cc\u0634\u0646\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062a\u0627\u0644\u06d2 \u06a9\u0648 \u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06a9\u06be\u06cc\u06ba<\/h3>\n<p>\u0628\u063a\u06cc\u0631 \u0679\u0627\u0626\u0645 \u0622\u0624\u0679 \u06a9\u06d2 \u0646\u06cc\u0679 \u0648\u0631\u06a9 \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u060c \u0627\u0646\u062a\u0638\u0627\u0631 <code>CountDownLatch<\/code> \u06a9\u0648\u0626\u06cc \u0628\u06be\u06cc \u0622\u067e\u0631\u06cc\u0634\u0646 \u062c\u0633 \u06a9\u06cc \u06a9\u0648\u0626\u06cc \u0688\u06cc\u0688 \u0644\u0627\u0626\u0646 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2 \u0627\u0648\u0631 \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u0633\u0627\u06a9\u0679 \u0633\u06d2 \u067e\u0691\u06be\u0646\u06d2 \u0645\u06cc\u06ba \u0631\u06a9\u0627\u0648\u0679\u06cc\u06ba \u06c1\u0645\u06cc\u0634\u06c1 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0644\u0679\u06a9 \u0633\u06a9\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u0627\u06af\u0631 \u0627\u0646 \u0645\u06cc\u06ba \u0633\u06d2 \u06a9\u0633\u06cc \u0627\u06cc\u06a9 \u06a9\u06d2 \u0627\u0631\u062f \u06af\u0631\u062f \u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u0644\u06af\u0627 \u06c1\u0648\u0627 \u06c1\u06d2 \u062a\u0648 \u062a\u0627\u0644\u0627 \u0628\u06be\u06cc \u0679\u0648\u0679 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u06a9\u0648\u0688 \u062a\u06a9\u0646\u06cc\u06a9\u06cc \u0637\u0648\u0631 \u067e\u0631 \u062a\u0645\u0627\u0645 \u0631\u0627\u0633\u062a\u0648\u06ba \u067e\u0631 \u062a\u0627\u0644\u06d2 \u06a9\u0648 \u062c\u0627\u0631\u06cc \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u0631\u06c1\u0627\u0626\u06cc \u06a9\u0628\u06be\u06cc \u0646\u06c1\u06cc\u06ba \u067e\u06c1\u0646\u0686 \u067e\u0627\u062a\u06cc \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u0622\u067e\u0631\u06cc\u0634\u0646 \u06a9\u0628\u06be\u06cc \u0645\u06a9\u0645\u0644 \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-patterns-that-prevent-leaks\">\u0644\u06cc\u06a9 \u06a9\u0648 \u0631\u0648\u06a9\u0646\u06d2 \u06a9\u06d2 \u0644\u0626\u06d2 \u067e\u06cc\u0679\u0631\u0646<\/h2>\n<p>\u0627\u0646 \u0644\u06cc\u06a9\u0633 \u06a9\u0627 \u062d\u0644 \u0686\u0646\u062f \u0639\u0627\u062f\u0627\u062a \u067e\u0631 \u0622\u062a\u0627 \u06c1\u06d2 \u062c\u0646 \u06a9\u0627 \u0644\u06af\u0627\u062a\u0627\u0631 \u0627\u0637\u0644\u0627\u0642 \u06a9\u0631\u0646\u0627 \u0622\u0633\u0627\u0646 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-always-use-a-timeout\">\u06c1\u0645\u06cc\u0634\u06c1 \u0648\u0642\u062a \u06a9\u06cc \u062d\u062f\u0648\u062f \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>\u062a\u0645\u0627\u0645 \u06a9\u0631\u0646\u0633\u06cc\u0648\u06ba <code>acquire()<\/code> \u0622\u067e \u06a9\u0648 \u0679\u0627\u0626\u0645 \u0622\u0624\u0679 \u067e\u0627\u0633 \u06a9\u0631\u0646\u0627 \u06c1\u0648\u06af\u0627\u06d4 \u0627\u06cc\u0646\u0688\u0631\u0648\u0626\u06cc\u0688 \u0644\u0646\u0679 \u0627\u0633\u06d2 \u0627\u0633 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0646\u0627\u0641\u0630 \u06a9\u0631\u062a\u0627 \u06c1\u06d2: <code>WakelockTimeout<\/code> \u06a9\u0627\u0644 \u067e\u0631 \u062c\u06be\u0646\u0688\u0627 \u0644\u06af\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0686\u06cc\u06a9 \u06a9\u0631\u06cc\u06ba\u06d4 <code>acquire()<\/code> \u0628\u063a\u06cc\u0631 \u06a9\u0633\u06cc \u062f\u0644\u06cc\u0644 \u06a9\u06d2\u06d4<\/p>\n<p>\u0627\u06cc\u06a9 \u0648\u0642\u062a \u06a9\u06cc \u062d\u062f \u06a9\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0631\u06cc\u06ba \u062c\u0648 \u0622\u067e\u0631\u06cc\u0634\u0646 \u0645\u06cc\u06ba \u0644\u06af\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0648\u0642\u062a \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u06c1\u0648\u060c \u0644\u06cc\u06a9\u0646 \u0627\u062a\u0646\u0627 \u0686\u06be\u0648\u0679\u0627 \u06c1\u0648 \u06a9\u06c1 \u0631\u0633\u0627\u0648 \u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06c1\u06d2\u06d4 \u0645\u0637\u0627\u0628\u0642\u062a \u067e\u0630\u06cc\u0631\u06cc \u06a9\u06cc \u06a9\u0627\u0631\u0631\u0648\u0627\u0626\u06cc\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u062c\u0648 \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 20 \u0633\u06cc\u06a9\u0646\u0688 \u0645\u06cc\u06ba \u0645\u06a9\u0645\u0644 \u06c1\u0648 \u062c\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0686\u0646\u062f \u0645\u0646\u0679 \u0642\u0627\u0628\u0644 \u0642\u0628\u0648\u0644 \u06c1\u06cc\u06ba\u06d4 \u0627\u06cc\u06a9 \u06af\u06be\u0646\u0679\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0646\u06c1\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-release-in-a-finally-block\">\u0622\u062e\u0631 \u0645\u06cc\u06ba \u0628\u0644\u0627\u06a9 \u0633\u06d2 \u0631\u06c1\u0627\u0626\u06cc<\/h3>\n<p>\u0633\u0679\u0631\u06a9\u0686\u0631\u0688 \u0631\u06cc\u0644\u06cc\u0632 \u0648\u0627\u062d\u062f \u0633\u0628 \u0633\u06d2 \u0645\u0624\u062b\u0631 \u062d\u0644 \u06c1\u06cc\u06ba\u06d4 \u06a9\u0648\u0679\u0644\u0646 \u0645\u06cc\u06ba\u060c \u0686\u06be\u0648\u0679\u06cc \u0627\u06cc\u06a9\u0633\u0679\u06cc\u0646\u0634\u0646 \u06a9\u0645 \u063a\u0644\u0637\u06cc \u06a9\u0627 \u0634\u06a9\u0627\u0631 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-kotlin\">inline fun <t> PowerManager.WakeLock.withLock(\n    timeoutMs: Long,\n    block: () -> T\n): T {\n    acquire(timeoutMs)\n    try {\n        return block()\n    } finally {\n        if (isHeld) release()\n    }\n}\n<\/t><\/code><\/pre>\n<p>\u06cc\u06c1 \u0641\u0646\u06a9\u0634\u0646 \u0645\u0637\u0644\u0648\u0628\u06c1 \u0679\u0627\u0626\u0645 \u0622\u0624\u0679 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0644\u0627\u06a9 \u062d\u0627\u0635\u0644 \u06a9\u0631 \u0644\u06cc\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u06a9\u0627\u0644\u0631 \u06a9\u06d2 \u0628\u0644\u0627\u06a9 \u067e\u0631 \u0639\u0645\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f \u0644\u0627\u06a9 \u06a9\u0648 \u062c\u0627\u0631\u06cc \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 <code>finally<\/code> I. \u06a9\u06cc\u0648\u0646\u06a9\u06c1 <code>finally<\/code>\u0631\u06cc\u0644\u06cc\u0632 \u0639\u0627\u0645 \u062a\u06a9\u0645\u06cc\u0644 \u067e\u0631\u060c \u06a9\u0633\u06cc \u0628\u0644\u0627\u06a9 \u0633\u06d2 \u062c\u0644\u062f \u0648\u0627\u067e\u0633\u06cc \u067e\u0631\u060c \u06cc\u0627 \u062c\u0628 \u06a9\u0648\u0626\u06cc \u0627\u0633\u062a\u062b\u0646\u0627\u0621 \u067e\u06be\u06cc\u0644\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u06a9\u06c1 <code>isHeld<\/code> \u0686\u06cc\u06a9 \u06a9\u0631\u0646\u0627 \u0636\u0631\u0648\u0631\u06cc \u06c1\u06d2 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u0627\u06af\u0631 \u06a9\u0648\u0626\u06cc \u0628\u0644\u0627\u06a9 \u0637\u0648\u06cc\u0644 \u0639\u0631\u0635\u06d2 \u0633\u06d2 \u0686\u0644 \u0631\u06c1\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u06c1\u0648 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0648\u0642\u062a \u062e\u062a\u0645 \u06c1\u0648\u0646\u06d2 \u06a9\u06cc \u0648\u062c\u06c1 \u0633\u06d2 \u0648\u06c1 \u067e\u06c1\u0644\u06d2 \u06c1\u06cc \u063a\u06cc\u0631 \u0645\u0642\u0641\u0644 \u06c1\u0648 \u0686\u06a9\u0627 \u06c1\u0648\u06d4 \u0627\u06af\u0631 \u0622\u067e \u06a9\u06d2 \u067e\u0627\u0633 \u0686\u06cc\u06a9 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u060c <code>release()<\/code> \u06a9\u0627\u0644 &quot;\u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u0627\u0646\u0688\u0631 \u0644\u0627\u06a9&#8221; \u06a9\u0648 \u0627\u0679\u06be\u0627\u062a\u06cc \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u0635\u0644 \u0645\u06cc\u06ba \u0628\u0644\u0627\u06a9 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u067e\u06be\u06cc\u0646\u06a9\u06d2 \u06af\u0626\u06d2 \u06a9\u0633\u06cc \u0628\u06be\u06cc \u0627\u0633\u062a\u062b\u0646\u0627\u0621 \u06a9\u0648 \u0628\u062f\u0644 \u062f\u06cc\u062a\u06cc \u06c1\u06d2\u06d4 \u0641\u0646\u06a9\u0634\u0646 \u0688\u0633\u067e\u0644\u06d2 <code>inline<\/code> \u0628\u06be\u06cc\u062c\u0646\u06d2 \u0648\u0627\u0644\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 <code>return<\/code> \u0628\u0644\u0627\u06a9 \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u0645\u0646\u0633\u0644\u06a9 \u0641\u0646\u06a9\u0634\u0646 \u0645\u06cc\u06ba <code>finally<\/code> \u062f\u0641\u0639\u0627\u062a \u0627\u0628 \u0628\u06be\u06cc \u0646\u0627\u0641\u0630 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0627\u0633\u0633\u0679\u0646\u0679 \u06a9\u0627 \u06c1\u0648\u0646\u0627 \u0633\u0627\u0628\u0642\u06c1 \u200b\u200b\u0631\u0627\u0628\u0637\u06d2 \u06a9\u06cc \u0645\u0637\u0627\u0628\u0642\u062a \u067e\u0630\u06cc\u0631\u06cc \u06a9\u06cc \u062e\u0635\u0648\u0635\u06cc\u062a \u06a9\u0648 \u0645\u062d\u0641\u0648\u0638 \u062a\u0631 \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-kotlin\">fun syncContacts() = wakeLock.withLock(timeoutMs = 5 * 60 * 1000L) {\n    val account = accountStore.current() ?: return\n    api.pushContacts(account)\n}\n<\/code><\/pre>\n<p>\u0627\u0628\u062a\u062f\u0627\u0626\u06cc \u0648\u0627\u067e\u0633\u06cc \u0627\u0648\u0631 \u0645\u0633\u062a\u062b\u0646\u06cc\u0627\u062a <code>pushContacts()<\/code> \u0627\u0628 \u062f\u0648\u0646\u0648\u06ba \u067e\u0627\u0633 \u06c1\u06cc\u06ba\u06d4 <code>finally<\/code> \u0631\u06a9\u0627\u0648\u0679 <code>withLock<\/code>\u060c \u0644\u06c1\u0630\u0627 \u06cc\u06c1 \u062a\u0645\u0627\u0645 \u0631\u0627\u0633\u062a\u0648\u06ba \u0645\u06cc\u06ba \u06a9\u06be\u0644\u0627 \u06c1\u06d2\u06d4 \u06a9\u0627\u0644 \u0633\u0627\u0626\u0679\u0633 \u0628\u06be\u06cc \u0686\u06be\u0648\u0679\u06cc \u06c1\u06cc\u06ba\u060c \u0627\u0648\u0631 \u062c\u0627\u0626\u0632\u06c1 \u0644\u06cc\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u06c1\u0631 \u0628\u0631\u0627\u0646\u0686 \u06a9\u0648 \u0679\u0631\u06cc\u06a9 \u06a9\u06cc\u06d2 \u0628\u063a\u06cc\u0631 \u0627\u06cc\u06a9 \u0646\u0638\u0631 \u0645\u06cc\u06ba \u062f\u0631\u0633\u062a\u06af\u06cc \u06a9\u0648 \u0686\u06cc\u06a9 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-scope-locks-to-coroutines-carefully\">\u06a9\u0648\u0631\u0648\u0679\u0627\u0626\u0646\u0632 \u067e\u0631 \u0627\u062d\u062a\u06cc\u0627\u0637 \u0633\u06d2 \u0627\u0633\u06a9\u0648\u067e \u0644\u0627\u06a9\u0646\u06af<\/h3>\n<p>\u0627\u06cc\u06a9 \u06c1\u06cc \u067e\u06cc\u0679\u0631\u0646 \u0627\u06cc\u06a9 \u06a9\u0648\u0631\u0679\u06cc\u0646 \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u06a9\u0648\u0679\u0644\u0646 \u0645\u06cc\u06ba \u0645\u0646\u0633\u0648\u062e\u06cc \u06a9\u0648 \u0627\u0633 \u0637\u0631\u062d \u067e\u06be\u06cc\u0644\u0627\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2: <code>CancellationException<\/code> \u0627\u0648\u0631 <code>finally<\/code> \u062c\u0628 \u06a9\u0648\u0631\u0648\u0679\u06cc\u0646 \u0645\u0646\u0633\u0648\u062e \u06c1\u0648 \u062c\u0627\u062a\u06cc \u06c1\u06d2\u060c \u062a\u0648 \u0628\u0644\u0627\u06a9 \u06a9\u0648 \u0639\u0645\u0644 \u0645\u06cc\u06ba \u0644\u0627\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-kotlin\">suspend fun uploadAll(files: List<file>) {\n    wakeLock.acquire(10 * 60 * 1000L)\n    try {\n        withTimeout(9 * 60 * 1000L) {\n            files.forEach { api.upload(it) }\n        }\n    } finally {\n        if (wakeLock.isHeld) wakeLock.release()\n    }\n}\n<\/file><\/code><\/pre>\n<p>\u0644\u0627\u06a9 \u0622\u067e\u0631\u06cc\u0634\u0646 \u0634\u0631\u0648\u0639 \u06c1\u0648\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u062d\u0627\u0635\u0644 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0622\u067e\u0631\u06cc\u0634\u0646 \u0645\u06a9\u0645\u0644 \u06c1\u0648\u0646\u06d2 \u067e\u0631 \u0627\u0633\u06d2 \u062c\u0627\u0631\u06cc \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 <code>finally<\/code>\u0634\u0627\u0645\u0644 \u062f\u0627\u0626\u0631\u06c1 \u06a9\u0627\u0631 \u06a9\u06cc \u062a\u06a9\u0645\u06cc\u0644\u060c \u0646\u0627\u06a9\u0627\u0645\u06cc \u0627\u0648\u0631 \u0645\u0646\u0633\u0648\u062e\u06cc \u067e\u0631 \u0639\u0645\u0644\u062f\u0631\u0622\u0645\u062f \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 <code>withTimeout<\/code> \u0627\u067e \u0644\u0648\u0688 \u067e\u0631 \u06c1\u06cc \u0627\u06cc\u06a9 \u0633\u062e\u062a \u0688\u06cc\u0688 \u0644\u0627\u0626\u0646 \u0644\u06af\u0627\u0626\u06cc\u06ba \u0627\u0648\u0631 \u0627\u0633\u06d2 \u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u0679\u0627\u0626\u0645 \u0622\u0624\u0679 \u0633\u06d2 \u062a\u06be\u0648\u0691\u0627 \u0686\u06be\u0648\u0679\u0627 \u0633\u06cc\u0679 \u06a9\u0631\u06cc\u06ba\u060c \u062c\u0633 \u0633\u06d2 \u0633\u0633\u0679\u0645 \u0644\u0627\u06a9 \u06a9\u0648 \u062c\u0627\u0631\u06cc \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u06a9\u0648\u0631\u0648\u0679\u06cc\u0646 \u062a\u0631\u06a9 \u06a9\u0631\u0646\u06d2 \u067e\u0631 \u0645\u062c\u0628\u0648\u0631 \u06c1\u0648 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u0633 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0628\u06cc\u0627\u0646 \u06a9\u0631\u062f\u06c1 \u063a\u06cc\u0631 \u0645\u062d\u062f\u0648\u062f \u06a9\u0627\u0631\u0631\u0648\u0627\u0626\u06cc\u0648\u06ba \u06a9\u0627 \u0645\u0633\u0626\u0644\u06c1 \u062d\u0644 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06cc\u06a9 \u0627\u0646\u062a\u0628\u0627\u06c1: <code>inline<\/code> \u0627\u06cc\u06a9 \u0627\u0646 \u0644\u0627\u0626\u0646 \u0644\u06cc\u0645\u0628\u0688\u0627 \u062c\u0628 \u062a\u0648\u0642\u0641 \u06a9\u06d2 \u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u0645\u06cc\u06ba \u0628\u0644\u0627\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u062a\u0648 \u0627\u06cc\u06a9 \u062a\u0648\u0642\u0641 \u0641\u0646\u06a9\u0634\u0646 \u06a9\u0648 \u06a9\u0627\u0644 \u06a9\u0631\u0633\u06a9\u062a\u0627 \u06c1\u06d2\u060c \u0644\u06c1\u0630\u0627 \u067e\u0686\u06be\u0644\u06d2 \u062d\u0635\u06d2 \u0633\u06d2 \u0645\u062f\u062f\u06af\u0627\u0631 \u0628\u06be\u06cc \u06cc\u06c1\u0627\u06ba \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc\u0627 \u062c\u0627\u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-give-each-job-its-own-lock\">\u06c1\u0631 \u06a9\u0627\u0645 \u06a9\u0648 \u0627\u0633 \u06a9\u0627 \u0627\u067e\u0646\u0627 \u0644\u0627\u06a9 \u062f\u06cc\u06ba\u06d4<\/h3>\n<p>\u0627\u06cc\u06a9 \u06a9\u0627 \u0627\u0634\u062a\u0631\u0627\u06a9 \u06a9\u0631\u06cc\u06ba <code>WakeLock<\/code> \u063a\u06cc\u0631 \u0645\u062a\u0639\u0644\u0642\u06c1 \u0641\u0646\u06a9\u0634\u0646\u0632 \u0645\u06cc\u06ba \u0627\u0634\u06cc\u0627\u0621 \u06a9\u06cc \u062a\u062e\u0644\u06cc\u0642 \u0633\u06d2 \u062d\u0648\u0627\u0644\u06c1 \u0634\u0645\u0627\u0631\u06cc \u06a9\u0627 \u0627\u0646\u062f\u0627\u0632\u06c1 \u0644\u06af\u0627\u0646\u0627 \u0645\u0634\u06a9\u0644 \u06c1\u0648 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0628\u06cc\u0679\u0631\u06cc \u06a9\u06d2 \u0627\u0639\u062f\u0627\u062f\u0648\u0634\u0645\u0627\u0631 \u0628\u06cc\u06a9\u0627\u0631 \u06c1\u0648 \u062c\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0627\u0633 \u06a9\u06cc \u0648\u062c\u06c1 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u062a\u0645\u0627\u0645 \u0641\u0646\u06a9\u0634\u0646 \u0627\u06cc\u06a9 \u06c1\u06cc \u0679\u06cc\u06af\u0632 \u06a9\u06cc \u0627\u0637\u0644\u0627\u0639 \u062f\u06cc\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06c1\u0631 \u06a9\u0627\u0645 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0648\u0636\u0627\u062d\u062a\u06cc \u0679\u06cc\u06af\u0632 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0639\u0644\u06cc\u062d\u062f\u06c1 \u062a\u0627\u0644\u06d2 \u0628\u0646\u0627\u0646\u06d2 \u0645\u06cc\u06ba \u0628\u06c1\u062a \u06a9\u0645 \u0644\u0627\u06af\u062a \u0622\u062a\u06cc \u06c1\u06d2 \u0627\u0648\u0631 \u06cc\u06c1 \u0644\u06cc\u06a9 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06c1 \u06a9\u0627 \u062a\u0639\u06cc\u0646 \u06a9\u0631\u0646\u0627 \u0628\u06c1\u062a \u0622\u0633\u0627\u0646 \u0628\u0646\u0627 \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06af\u0631 \u062a\u0627\u0644\u06d2 \u06a9\u0627 \u0627\u0634\u062a\u0631\u0627\u06a9 \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u062d\u0648\u0627\u0644\u06c1 \u0634\u0645\u0627\u0631 \u06a9\u0648 \u063a\u06cc\u0631 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba \u06cc\u0627 \u0627\u0633 \u0628\u0627\u062a \u06a9\u0648 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u0626\u06cc\u06ba \u06a9\u06c1 \u0627\u06cc\u06a9 \u06c1\u06cc \u0645\u0627\u0644\u06a9 \u062a\u0627\u0644\u0627 \u06a9\u0627 \u0627\u0646\u062a\u0638\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-attribute-work-correctly\">\u067e\u0631\u0627\u067e\u0631\u0679\u06cc \u0635\u062d\u06cc\u062d \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4<\/h3>\n<p>\u0627\u06af\u0631 \u0622\u067e \u06a9\u0627 \u06a9\u0648\u0688 \u06a9\u0633\u06cc \u0627\u0648\u0631 \u0627\u06cc\u067e \u06cc\u0627 UID (\u0633\u0633\u0679\u0645 \u0633\u0631\u0648\u0633\u0632 \u0627\u0648\u0631 SDKs \u0645\u06cc\u06ba \u0639\u0627\u0645) \u06a9\u06cc \u062c\u0627\u0646\u0628 \u0633\u06d2 \u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u062d\u0627\u0635\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u06a9\u0627\u0644 \u06a9\u0631\u06cc\u06ba: <code>setWorkSource()<\/code> \u0644\u06c1\u0630\u0627 \u0628\u06cc\u0679\u0631\u06cc \u06a9\u06cc \u0642\u06cc\u0645\u062a \u06a9\u0627 \u0628\u0644 \u0635\u062d\u06cc\u062d \u0641\u0631\u06cc\u0642 \u06a9\u0648 \u062f\u06cc\u0627 \u062c\u0627\u0626\u06d2 \u06af\u0627\u06d4 \u0627\u06cc\u067e\u0633 \u06a9\u0648 \u0634\u0627\u0630 \u0648 \u0646\u0627\u062f\u0631 \u06c1\u06cc \u0627\u0633 \u062e\u0635\u0648\u0635\u06cc\u062a \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u067e\u0644\u06cc\u0679 \u0641\u0627\u0631\u0645 \u0627\u0648\u0631 OEM \u0627\u0646\u062c\u06cc\u0646\u0626\u0631\u0632 \u06a9\u0648 \u06cc\u06c1 \u062c\u0627\u0646\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2 \u06a9\u06c1 \u06cc\u06c1 \u0645\u0648\u062c\u0648\u062f \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-when-you-dont-need-a-wake-lock-at-all\">\u062c\u0628 \u0622\u067e \u06a9\u0648 \u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u06a9\u06cc \u0628\u0627\u0644\u06a9\u0644 \u0628\u06be\u06cc \u0636\u0631\u0648\u0631\u062a \u0646\u06c1 \u06c1\u0648\u06d4<\/h2>\n<p>\u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u0644\u06cc\u06a9 \u06a9\u0648 \u0631\u0648\u06a9\u0646\u06d2 \u06a9\u0627 \u0628\u06c1\u062a\u0631\u06cc\u0646 \u0637\u0631\u06cc\u0642\u06c1 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u06a9\u0648 \u0646\u06c1 \u067e\u06a9\u0691\u0627 \u062c\u0627\u0626\u06d2\u06d4 \u062c\u062f\u06cc\u062f \u0627\u06cc\u0646\u0688\u0631\u0627\u0626\u06cc\u0688 \u0645\u06cc\u06ba \u0628\u06cc\u06a9 \u06af\u0631\u0627\u0624\u0646\u0688 \u06a9\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u062a\u0631 \u06a9\u0627\u0645\u0648\u06ba \u06a9\u0648 \u0627\u0639\u0644\u06cc\u0670 \u0633\u0637\u062d \u06a9\u06d2 APIs \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2 \u062c\u0648 \u0627\u0646\u062f\u0631\u0648\u0646\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u06a9\u0627 \u0627\u0646\u062a\u0638\u0627\u0645 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<table>\n<thead>\n<tr>\n<th>\u0636\u0631\u0648\u0631\u06cc<\/th>\n<th>\u062f\u0633\u062a\u06cc \u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\u0645\u0648\u062e\u0631 \u067e\u0633 \u0645\u0646\u0638\u0631 \u06a9\u06d2 \u06a9\u0627\u0645 (\u0645\u0637\u0627\u0628\u0642\u062a \u067e\u0630\u06cc\u0631\u06cc\u060c \u0627\u067e \u0644\u0648\u0688\u060c \u0635\u0641\u0627\u0626\u06cc)<\/td>\n<td>\u0648\u0631\u06a9 \u0645\u06cc\u0646\u06cc\u062c\u0631 \u06cc\u0627 \u062c\u0627\u0628 \u0634\u06cc\u0688\u06cc\u0648\u0644\u0631<\/td>\n<\/tr>\n<tr>\n<td>\u0648\u06c1 \u06a9\u0627\u0645 \u062c\u0646 \u06a9\u0648 \u0639\u06cc\u0646 \u0648\u0642\u062a \u067e\u0631 \u0627\u0646\u062c\u0627\u0645 \u062f\u06cc\u0627 \u062c\u0627\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4<\/td>\n<td><code>AlarmManager.setExactAndAllowWhileIdle()<\/code>    \u0627\u0633 \u06a9\u06d2 \u0639\u0644\u0627\u0648\u06c1 \u06cc\u06c1 \u0627\u06cc\u06a9 \u0645\u062e\u062a\u0635\u0631 \u06a9\u0627\u0645 \u06c1\u06d2\u06d4<\/td>\n<\/tr>\n<tr>\n<td>\u0628\u0631\u0627\u0688\u06a9\u0627\u0633\u0679 \u06a9\u06d2 \u0628\u0639\u062f \u0645\u062e\u062a\u0635\u0631 \u0641\u0627\u0644\u0648 \u0627\u067e<\/td>\n<td><code>BroadcastReceiver.goAsync()<\/code><\/td>\n<\/tr>\n<tr>\n<td>\u0637\u0648\u06cc\u0644 \u0639\u0631\u0635\u06d2 \u0633\u06d2 \u0686\u0644\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u06a9\u0627\u0645 \u062c\u0646 \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u0622\u067e \u062c\u0627\u0646\u062a\u06d2 \u06c1\u06cc\u06ba (\u0645\u0648\u0633\u06cc\u0642\u06cc\u060c \u0646\u06cc\u0648\u06cc\u06af\u06cc\u0634\u0646\u060c \u0648\u0631\u0632\u0634)<\/td>\n<td>\u067e\u06cc\u0634 \u0645\u0646\u0638\u0631 \u06a9\u06cc \u062e\u062f\u0645\u062a \u06a9\u06cc \u0645\u0646\u0627\u0633\u0628 \u0642\u0633\u0645<\/td>\n<\/tr>\n<tr>\n<td>\u0633\u0631\u06af\u0631\u0645\u06cc \u062f\u06a9\u06be\u0627\u062a\u06d2 \u0648\u0642\u062a \u0627\u0633\u06a9\u0631\u06cc\u0646 \u06a9\u0648 \u0622\u0646 \u0631\u06a9\u06be\u06cc\u06ba<\/td>\n<td><code>FLAG_KEEP_SCREEN_ON<\/code><\/td>\n<\/tr>\n<tr>\n<td>\u0635\u0627\u0631\u0641 \u06a9\u06cc \u0637\u0631\u0641 \u0633\u06d2 \u0634\u0631\u0648\u0639 \u06a9\u0631\u062f\u06c1 \u0688\u06cc\u0679\u0627 \u0679\u0631\u0627\u0646\u0633\u0641\u0631<\/td>\n<td>\u0635\u0627\u0631\u0641 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0634\u0631\u0648\u0639 \u06a9\u0631\u062f\u06c1 \u0688\u06cc\u0679\u0627 \u0679\u0631\u0627\u0646\u0633\u0641\u0631 \u0622\u067e\u0631\u06cc\u0634\u0646\u0632 (API 34 \u0627\u0648\u0631 \u0627\u0633 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u0628\u0627\u0626\u06cc\u06ba \u06a9\u0627\u0644\u0645 \u0627\u0633 \u0628\u0627\u062a \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0627\u06cc\u067e \u06a9\u06cc\u0627 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u06a9\u0648\u0634\u0634 \u06a9\u0631 \u0631\u06c1\u06cc \u06c1\u06d2\u060c \u0627\u0648\u0631 \u062f\u0627\u0626\u06cc\u06ba \u06a9\u0627\u0644\u0645 API \u06a9\u0627 \u0646\u0627\u0645 \u062f\u06cc\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u0627\u0633\u06d2 \u06c1\u06cc\u0646\u0688\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0639\u0627\u0645 \u062f\u06be\u0627\u06af\u06c1 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u0627\u0646 APIs \u0645\u06cc\u06ba \u0633\u06d2 \u06c1\u0631 \u0627\u06cc\u06a9 \u0622\u067e \u06a9\u06cc \u0637\u0631\u0641 \u0633\u06d2 \u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u0644\u06cc\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0622\u067e\u0631\u06cc\u0634\u0646 \u0645\u06a9\u0645\u0644 \u06c1\u0648\u0646\u06d2 \u06cc\u0627 \u0648\u0642\u062a \u062e\u062a\u0645 \u06c1\u0648\u0646\u06d2 \u067e\u0631 \u0627\u0633\u06d2 \u062c\u0627\u0631\u06cc \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0648\u0631\u06a9 \u0645\u06cc\u0646\u06cc\u062c\u0631 \u0627\u0648\u0631 \u062c\u0627\u0628 \u0634\u06cc\u0688\u06cc\u0648\u0644\u0631 \u0645\u0646\u062f\u0631\u062c\u06c1 \u0630\u06cc\u0644 \u0627\u062f\u0648\u0627\u0631 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u0631\u06a9\u06be\u062a\u06d2 \u06c1\u06cc\u06ba: <code>doWork()<\/code> \u06cc\u0627 <code>onStartJob()<\/code> \u0639\u0645\u0644\u062f\u0631\u0622\u0645\u062f \u06a9\u06cc \u062d\u062f\u06cc\u06ba \u0644\u0627\u06af\u0648 \u06a9\u0631\u06cc\u06ba\u06d4 <code>goAsync()<\/code> \u0633\u0633\u0679\u0645 \u06a9\u06d2 \u0628\u0631\u0627\u0688\u06a9\u0627\u0633\u0679 \u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u06a9\u0648 \u062a\u0642\u0631\u06cc\u0628\u0627\u064b 10 \u0633\u06cc\u06a9\u0646\u0688 \u062a\u06a9 \u0628\u0691\u06be\u0627\u062a\u0627 \u06c1\u06d2 \u062c\u0628 \u06cc\u06c1 \u0627\u067e\u0646\u0627 \u06a9\u0627\u0645 \u0645\u06a9\u0645\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 <code>FLAG_KEEP_SCREEN_ON<\/code> \u06cc\u06c1 \u0648\u0646\u0688\u0648 \u06a9\u06cc \u0645\u0631\u0626\u06cc\u062a \u0633\u06d2 \u0645\u0646\u0633\u0644\u06a9 \u06c1\u06d2 \u0627\u0648\u0631 \u0635\u0627\u0631\u0641 \u06a9\u06d2 \u062c\u0627\u0646\u06d2 \u067e\u0631 \u063a\u0627\u0626\u0628 \u06c1\u0648 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1\u0627\u06ba \u0627\u06cc\u06a9 \u0648\u0631\u06a9 \u0645\u06cc\u0646\u06cc\u062c\u0631 \u06a9\u0627\u0631\u06a9\u0646 \u06c1\u06d2 \u062c\u0648 \u0627\u067e \u0644\u0648\u0688 \u06a9\u06cc \u0645\u062b\u0627\u0644 \u06a9\u0648 \u0628\u062f\u0644 \u062f\u06cc\u062a\u0627 \u06c1\u06d2:<\/p>\n<pre><code class=\"language-kotlin\">class UploadWorker(\n    context: Context,\n    params: WorkerParameters\n) : CoroutineWorker(context, params) {\n\n    override suspend fun doWork(): Result {\n        return try {\n            uploadPendingFiles()\n            Result.success()\n        } catch (e: IOException) {\n            Result.retry()\n        }\n    }\n}\n<\/code><\/pre>\n<p><code>CoroutineWorker<\/code>    \u0686\u0644\u0627\u0626\u06cc\u06ba <code>doWork()<\/code> \u062c\u0627\u0628 \u0634\u06cc\u0688\u06cc\u0648\u0644\u0631 \u06a9\u06d2 \u067e\u0627\u0633 \u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u06c1\u06d2\u06d4 \u062c\u0628 <code>doWork()<\/code> \u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u062c\u0627\u0631\u06cc \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u0627\u0633 \u0633\u06d2 \u0642\u0637\u0639 \u0646\u0638\u0631 \u06a9\u06c1 \u0646\u062a\u06cc\u062c\u06c1 \u06a9\u0627\u0645\u06cc\u0627\u0628\u06cc\u060c \u0646\u0627\u06a9\u0627\u0645\u06cc\u060c \u06cc\u0627 \u062f\u0648\u0628\u0627\u0631\u06c1 \u06a9\u0648\u0634\u0634 \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u06a9\u0648\u0626\u06cc \u0679\u0627\u0633\u06a9 \u0632\u06cc\u0627\u062f\u06c1 \u062f\u06cc\u0631 \u062a\u06a9 \u0686\u0644\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u0633\u0633\u0679\u0645 \u0679\u0627\u0633\u06a9 \u06a9\u0648 \u0631\u0648\u06a9\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u06a9\u0648\u0631\u0679\u06cc\u0646 \u06a9\u0648 \u0645\u0646\u0633\u0648\u062e \u06a9\u0631 \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4 \u0645\u0648\u062c\u0648\u062f \u0646\u06c1\u06cc\u06ba \u06c1\u06d2 <code>acquire()<\/code> \u06cc\u0627 <code>release()<\/code> \u06cc\u06c1 \u06a9\u0648\u0688 \u0645\u06cc\u06ba \u06c1\u06d2\u060c \u0644\u06c1\u0630\u0627 \u0644\u06cc\u06a9 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u0626\u06d2 \u06a9\u0686\u06be \u0646\u06c1\u06cc\u06ba \u06c1\u06d2. \u0648\u0627\u067e\u0633\u06cc \u06a9\u06d2 \u0631\u0627\u0633\u062a\u06d2 \u0645\u06cc\u06ba <code>Result.retry()<\/code> I\/O \u06a9\u06cc \u0646\u0627\u06a9\u0627\u0645\u06cc \u067e\u0631\u060c CPU \u06a9\u0648 \u0641\u0639\u0627\u0644 \u0631\u06a9\u06be\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u062c\u0628 \u0622\u067e \u06a9\u06cc \u0627\u06cc\u067e \u062f\u0648\u0628\u0627\u0631\u06c1 \u06a9\u0648\u0634\u0634 \u06a9\u0631\u062a\u06cc \u06c1\u06d2 \u062a\u0648\u060c WorkManager \u062f\u0648\u0633\u0631\u06cc \u06a9\u0648\u0634\u0634 \u06a9\u0648 \u0634\u06cc\u0688\u0648\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0628\u06cc\u06a9 \u0622\u0641 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u062f\u0633\u062a\u06cc \u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u0627\u0628 \u0628\u06be\u06cc \u0645\u0648\u062c\u0648\u062f \u06c1\u06d2\u06d4 \u0645\u06cc\u0688\u06cc\u0627 \u067e\u0644\u06cc\u0626\u0631\u0632\u060c VoIP \u0633\u0679\u06cc\u06a9\u0633\u060c \u0627\u0648\u0631 \u0627\u06cc\u067e\u0633 \u062c\u0648 \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0645\u0646\u0633\u0644\u06a9 \u0622\u0644\u0627\u062a \u0633\u06d2 \u0688\u06cc\u0679\u0627 \u06a9\u0648 \u0633\u0679\u0631\u06cc\u0645 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba\u060c \u0627\u06a9\u062b\u0631 \u067e\u06cc\u0634 \u0645\u0646\u0638\u0631 \u0633\u0631\u0648\u0633 \u06a9\u06d2 \u0641\u0639\u0627\u0644 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646 CPU \u06a9\u0648 \u0686\u0644\u062a\u06d2 \u0631\u06c1\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4 \u0627\u0633 \u0635\u0648\u0631\u062a \u0645\u06cc\u06ba\u060c \u0633\u0631\u0648\u0633 \u0644\u0627\u0626\u0641 \u0633\u0627\u0626\u06cc\u06a9\u0644 \u06a9\u06cc \u0645\u0627\u0644\u06a9 \u06c1\u06d2 \u0627\u0648\u0631 \u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u06a9\u0648 \u0627\u0633 \u0633\u06d2 \u062d\u0627\u0635\u0644 \u06a9\u06cc\u0627 \u062c\u0627\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2: <code>onCreate()<\/code> \u06cc\u0627 \u062c\u0628 \u067e\u0644\u06d2 \u0628\u06cc\u06a9 \u0634\u0631\u0648\u0639 \u06c1\u0648\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0645\u06cc\u0686\u0646\u06af \u0627\u0633\u0679\u0627\u067e \u067e\u0627\u062a\u06be \u0633\u06d2 \u0631\u06cc\u0644\u06cc\u0632 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4 <code>onDestroy()<\/code>.<\/p>\n<p>\u06cc\u06c1 \u062c\u0627\u0646\u0646\u0627 \u0628\u06be\u06cc \u0645\u062f\u062f\u06af\u0627\u0631 \u06c1\u06d2 \u06a9\u06c1 \u0646\u06cc\u0646\u062f \u06a9\u0627 \u0645\u0648\u0688 \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0622\u067e \u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u06a9\u06cc\u0627 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u062c\u0628 \u0622\u0644\u06c1 \u0633\u0644\u06cc\u067e \u0645\u0648\u0688 \u0645\u06cc\u06ba \u062f\u0627\u062e\u0644 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u0633\u0633\u0679\u0645 \u06a9\u0633\u06cc \u0628\u06be\u06cc \u062c\u0632\u0648\u06cc \u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u06a9\u0648 \u0646\u0638\u0631 \u0627\u0646\u062f\u0627\u0632 \u06a9\u0631 \u062f\u06cc\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u0627\u06cc\u067e\u0633 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06c1 \u0631\u06a9\u06be\u06d2 \u06af\u0626\u06d2 \u06c1\u06cc\u06ba \u062c\u0648 \u0628\u06cc\u0679\u0631\u06cc \u0622\u067e\u0679\u06cc\u0645\u0627\u0626\u0632\u06cc\u0634\u0646 \u0648\u0627\u0626\u0679 \u0644\u0633\u0679 \u0645\u06cc\u06ba \u0646\u06c1\u06cc\u06ba \u06c1\u06cc\u06ba\u06d4 \u06cc\u06c1 \u0644\u06cc\u06a9 \u06c1\u0648\u0646\u06d2 \u0648\u0627\u0644\u0627 \u0644\u0627\u0626\u0633\u0646\u0633 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u060c \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u0645\u06cc\u0646\u0679\u06cc\u0646\u0646\u0633 \u0648\u0646\u0688\u0648 \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646 \u0627\u0648\u0631 \u0688\u06cc\u0648\u0627\u0626\u0633 \u06a9\u06d2 \u0641\u0639\u0627\u0644 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646 \u0644\u0627\u06a9 \u06a9\u0627 \u062d\u0633\u0627\u0628 \u0644\u06af\u0627\u0646\u0627 \u062c\u0627\u0631\u06cc \u0631\u06c1\u062a\u0627 \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u06cc\u06c1 \u0628\u062a\u0627\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u06a9\u06cc\u0648\u06ba \u0627\u06a9\u06cc\u0644\u0627 \u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u0627\u0633 \u0628\u0627\u062a \u06a9\u06cc \u0636\u0645\u0627\u0646\u062a \u0646\u06c1\u06cc\u06ba \u062f\u06cc\u062a\u0627 \u06a9\u06c1 \u0622\u067e \u06a9\u0627 \u06a9\u0648\u0688 \u0631\u0627\u062a \u0628\u06be\u0631 \u0686\u0644\u062a\u0627 \u0631\u06c1\u06d2 \u06af\u0627\u06d4<\/p>\n<h2 id=\"heading-how-to-detect-wake-lock-leaks\">\u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u0644\u06cc\u06a9 \u06a9\u0627 \u067e\u062a\u06c1 \u0644\u06af\u0627\u0646\u06d2 \u06a9\u0627 \u0637\u0631\u06cc\u0642\u06c1<\/h2>\n<p>\u0688\u0648\u06cc\u0644\u067e\u0645\u0646\u0679 \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646 \u0644\u06cc\u06a9 \u0634\u0627\u0630 \u0648 \u0646\u0627\u062f\u0631 \u06c1\u06cc \u0638\u0627\u06c1\u0631 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u0688\u06cc\u0648\u0627\u0626\u0633 \u0645\u0646\u0633\u0644\u06a9 \u06c1\u06d2\u060c \u0627\u0633\u06a9\u0631\u06cc\u0646 \u0622\u0646 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u06a9\u0648\u0626\u06cc \u0627\u0648\u0631 \u0686\u06cc\u0632 \u0627\u0633\u06d2 \u062c\u06af\u0627 \u0631\u06c1\u06cc \u06c1\u06d2\u06d4 \u0622\u067e \u06a9\u0648 \u0627\u0633\u06d2 \u062c\u0627\u0646 \u0628\u0648\u062c\u06be \u06a9\u0631 \u062a\u0644\u0627\u0634 \u06a9\u0631\u0646\u0627 \u06c1\u0648\u06af\u0627\u06d4<\/p>\n<h3 id=\"heading-check-currently-held-locks-with-dumpsys-power\">\u0688\u0645\u067e\u0633\u06cc \u067e\u0627\u0648\u0631 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0641\u06cc \u0627\u0644\u062d\u0627\u0644 \u0631\u06a9\u06be\u06d2 \u06c1\u0648\u0626\u06d2 \u062a\u0627\u0644\u06d2 \u06a9\u0648 \u0686\u06cc\u06a9 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>\u067e\u0648\u0686\u06be\u0646\u0627 \u062a\u0644\u0627\u0634 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u062a\u06cc\u0632 \u062a\u0631\u06cc\u0646 \u0637\u0631\u06cc\u0642\u06c1 \u06c1\u06d2\u06d4 <code>PowerManagerService<\/code> \u0627\u0628 \u062a\u0645 \u06a9\u06cc\u0627 \u067e\u06a9\u0691\u06d2 \u06c1\u0648\u0626\u06d2 \u06c1\u0648\u061f<\/p>\n<pre><code class=\"language-bash\">adb shell dumpsys power | grep -A 20 \"Wake Locks:\"\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u06a9\u0645\u0627\u0646\u0688 \u067e\u0627\u0648\u0631 \u0645\u06cc\u0646\u06cc\u062c\u0631 \u06a9\u06cc \u067e\u0648\u0631\u06cc \u062d\u0627\u0644\u062a \u06a9\u0648 \u0688\u0645\u067e \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u0633\u06d2 \u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u0633\u06cc\u06a9\u0634\u0646 \u0645\u06cc\u06ba \u0641\u0644\u0679\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0622\u0624\u0679 \u067e\u0679 \u062a\u0645\u0627\u0645 \u0627\u06cc\u067e \u0644\u06cc\u0648\u0644 \u0648\u06cc\u06a9 \u0644\u0627\u06a9\u0633 \u06a9\u06cc \u0641\u06c1\u0631\u0633\u062a \u062f\u06cc\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u0641\u06cc \u0644\u0627\u0626\u0646 \u0631\u06a9\u06be\u06d2 \u06c1\u0648\u0626\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-plaintext\">Wake Locks: size=2\n  PARTIAL_WAKE_LOCK              'myapp:upload' ACQ=-14m32s110ms (uid=10245 pid=8123)\n  PARTIAL_WAKE_LOCK              'AudioMix' ACQ=-3s204ms (uid=1041 ws=WorkSource{10112})\n<\/code><\/pre>\n<p>\u06c1\u0631 \u0644\u0627\u0626\u0646 \u0645\u06cc\u06ba \u0644\u0627\u06a9 \u0644\u06cc\u0648\u0644\u060c \u0679\u06cc\u06af\u060c \u0627\u0648\u0631 \u062d\u0627\u0635\u0644 \u0634\u062f\u06c1 \u0648\u0642\u062a \u06c1\u0648\u062a\u0627 \u06c1\u06d2 (<code>ACQ<\/code>) \u06a9\u0627 \u0645\u0627\u0644\u06a9 UID\u060c \u0627\u0648\u0631 \u0639\u0645\u0644\u06d4<\/p>\n<p>\u0627\u0633 \u0645\u062b\u0627\u0644 \u0645\u06cc\u06ba <code>myapp:upload<\/code> \u0627\u0633\u06d2 14 \u0645\u0646\u0679 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0631\u06a9\u06be\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u060c \u062c\u0648 \u06a9\u06c1 \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 \u0644\u06cc\u06a9 \u06c1\u0648\u0646\u06d2 \u06a9\u0627 \u0627\u06cc\u06a9 \u0645\u0636\u0628\u0648\u0637 \u0627\u0634\u0627\u0631\u06c1 \u06c1\u0648\u062a\u0627 \u06c1\u06d2 \u0627\u06af\u0631 \u0627\u0633\u06d2 \u0627\u067e \u0644\u0648\u0688 \u06a9\u0631\u0646\u06d2 \u0645\u06cc\u06ba \u0686\u0646\u062f \u0633\u06cc\u06a9\u0646\u0688 \u0644\u06af\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u062f\u0648\u0633\u0631\u0627 \u0622\u0626\u0679\u0645 \u062f\u0648\u0633\u0631\u06d2 \u0627\u06cc\u067e \u06a9\u06cc \u062c\u0627\u0646\u0628 \u0633\u06d2 \u0622\u0688\u06cc\u0648 \u0633\u0631\u0648\u0631 \u06a9\u06d2 \u067e\u0627\u0633 \u06c1\u06d2\u060c \u062c\u06cc\u0633\u0627 \u06a9\u06c1 \u0627\u0633 \u06a9\u06d2 \u0627\u06cc\u06a9\u0634\u0646 \u0633\u0648\u0631\u0633 \u0645\u06cc\u06ba \u0627\u0634\u0627\u0631\u06c1 \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4 \u0627\u0633\u06a9\u0631\u06cc\u0646 \u06a9\u0648 \u0628\u0646\u062f \u06a9\u0631\u06cc\u06ba\u060c \u0627\u06cc\u06a9 \u0644\u0645\u062d\u06c1 \u0627\u0646\u062a\u0638\u0627\u0631 \u06a9\u0631\u06cc\u06ba\u060c \u0627\u0648\u0631 \u067e\u06be\u0631 \u0627\u0633 \u06a9\u0645\u0627\u0646\u0688 \u06a9\u0648 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0686\u0644\u0627\u0626\u06cc\u06ba\u06d4 \u0627\u06cc\u067e \u0645\u06cc\u06ba \u06a9\u0648\u0626\u06cc \u0628\u06be\u06cc \u062a\u0627\u0644\u06d2 \u0627\u0628 \u0628\u06be\u06cc \u0627\u0633 \u06a9\u06d2 \u0628\u0691\u06be\u062a\u06d2 \u06c1\u06cc \u0645\u0648\u062c\u0648\u062f \u0631\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 <code>ACQ<\/code> \u06cc\u06c1 \u062a\u062d\u0642\u06cc\u0642 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0622\u067e \u06a9\u06d2 \u0648\u0642\u062a \u06a9\u06d2 \u0642\u0627\u0628\u0644 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-measure-totals-with-batterystats\">\u0628\u06cc\u0679\u0631\u06cc \u06a9\u06d2 \u0627\u0639\u062f\u0627\u062f\u0648\u0634\u0645\u0627\u0631 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0679\u0648\u0679\u0644 \u06a9\u06cc \u067e\u06cc\u0645\u0627\u0626\u0634 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p><code>dumpsys power<\/code>    \u0645\u0648\u062c\u0648\u062f\u06c1 \u0644\u0645\u062d\u06c1 \u062f\u06a9\u06be\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u0648\u0642\u062a \u06a9\u06cc \u0627\u06cc\u06a9 \u0645\u062f\u062a \u0645\u06cc\u06ba \u062c\u0645\u0639 \u06c1\u0648\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u0679\u0627\u0626\u0645 \u06a9\u0648 \u062f\u06cc\u06a9\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0628\u06cc\u0679\u0631\u06cc \u06a9\u06d2 \u0627\u0639\u062f\u0627\u062f\u0648\u0634\u0645\u0627\u0631 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-bash\">adb shell dumpsys batterystats --reset\n# unplug, use the device normally or leave it idle for a while\nadb shell dumpsys batterystats com.example.myapp | grep -i \"wake lock\"\n<\/code><\/pre>\n<p>\u067e\u06c1\u0644\u06cc \u06a9\u0645\u0627\u0646\u0688 \u062c\u0645\u0639 \u06a9\u0631\u062f\u06c1 \u0627\u0639\u062f\u0627\u062f\u0648\u0634\u0645\u0627\u0631 \u06a9\u0648 \u0635\u0627\u0641 \u06a9\u0631\u062a\u06cc \u06c1\u06d2 \u0627\u0648\u0631 \u067e\u06cc\u0645\u0627\u0626\u0634 \u06a9\u0648 \u0646\u0626\u06d2 \u0633\u0631\u06d2 \u0633\u06d2 \u0634\u0631\u0648\u0639 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0633\u0628\u0628 \u0628\u0646\u062a\u06cc \u06c1\u06d2\u06d4 \u0688\u06cc\u0648\u0627\u0626\u0633 \u06a9\u0648 \u0628\u06cc\u0679\u0631\u06cc \u067e\u0631 \u062a\u06be\u0648\u0691\u06cc \u062f\u06cc\u0631 \u062a\u06a9 \u0686\u0644\u0627\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f (\u06a9\u0645 \u0627\u0632 \u06a9\u0645 \u0627\u06cc\u06a9 \u06af\u06be\u0646\u0679\u06c1 \u0645\u0641\u06cc\u062f \u0646\u0645\u0628\u0631 \u062f\u06cc\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2)\u060c \u062f\u0648\u0633\u0631\u06cc \u06a9\u0645\u0627\u0646\u0688 \u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u0644\u0627\u0626\u0646 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0641\u0644\u0679\u0631 \u06a9\u06cc\u06d2 \u06af\u0626\u06d2 \u067e\u06cc\u06a9\u06cc\u062c\u0632 \u06a9\u06d2 \u0627\u0639\u062f\u0627\u062f\u0648\u0634\u0645\u0627\u0631 \u067e\u0631\u0646\u0679 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u06c1\u0631 \u0679\u06cc\u06af \u0627\u0633 \u06a9\u06d2 \u06a9\u0644 \u0642\u0628\u0636\u06d2 \u06a9\u06d2 \u0648\u0642\u062a \u0627\u0648\u0631 \u062d\u0635\u0648\u0644 \u06a9\u06cc \u062a\u0639\u062f\u0627\u062f \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0638\u0627\u06c1\u0631 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4 \u0632\u06cc\u0627\u062f\u06c1 \u06a9\u0644 \u0648\u0642\u062a \u0627\u0648\u0631 \u06a9\u0645 \u062d\u0635\u0648\u0644\u06cc \u06af\u0646\u062a\u06cc \u0648\u0627\u0644\u06d2 \u0679\u06cc\u06af\u0632 \u06a9\u0627 \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 \u0645\u0637\u0644\u0628 \u06cc\u06c1 \u06c1\u0648\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u062a\u0627\u0644\u0627 \u06a9\u0627\u0641\u06cc \u062f\u06cc\u0631 \u062a\u06a9 \u0631\u06a9\u06be\u0627 \u06af\u06cc\u0627 \u062a\u06be\u0627 \u0627\u0648\u0631 \u0627\u0633\u06d2 \u0641\u0648\u0631\u06cc \u0637\u0648\u0631 \u067e\u0631 \u062c\u0627\u0631\u06cc \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u062a\u06be\u0627\u06d4<\/p>\n<p>\u0628\u0635\u0631\u06cc \u0679\u0627\u0626\u0645 \u0644\u0627\u0626\u0646 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0628\u06af \u0631\u067e\u0648\u0631\u0679\u0633 \u06a9\u06cc\u067e\u0686\u0631 \u06a9\u0631\u06cc\u06ba: <code>adb bugreport<\/code> \u0628\u06cc\u0679\u0631\u06cc \u06c1\u0633\u0679\u0648\u0631\u06cc\u0646 \u0645\u06cc\u06ba \u0644\u0648\u0688 \u06a9\u0631\u06cc\u06ba \u06cc\u0627 \u067e\u0631\u0641\u06cc\u0679\u0648 \u0679\u0631\u06cc\u0633 \u06a9\u0648 \u0631\u06cc\u06a9\u0627\u0631\u0688 \u06a9\u0631\u06cc\u06ba\u06d4 <code>android.power<\/code> \u0688\u06cc\u0679\u0627 \u0633\u0648\u0631\u0633 \u0686\u0627\u0644\u0648 \u06c1\u0648 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4 \u062f\u0648\u0646\u0648\u06ba \u0648\u06cc\u06a9 \u0644\u0627\u06a9\u0633 \u0627\u0633\u06a9\u0631\u06cc\u0646 \u06a9\u06cc \u062d\u0627\u0644\u062a\u060c \u0646\u06cc\u0679 \u0648\u0631\u06a9 \u06a9\u06cc \u0633\u0631\u06af\u0631\u0645\u06cc\u060c \u0627\u0648\u0631 CPU \u0641\u0631\u06cc\u06a9\u0648\u0626\u0646\u0633\u06cc \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0648\u0627\u0644\u06cc \u0679\u0627\u0626\u0645 \u0644\u0627\u0626\u0646 \u067e\u0631 \u0628\u0627\u0631\u0632 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0688\u0633\u067e\u0644\u06d2 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062c\u0633 \u0633\u06d2 \u06cc\u06c1 \u062f\u06cc\u06a9\u06be\u0646\u0627 \u0622\u0633\u0627\u0646 \u06c1\u0648 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u06a9\u0648\u0646 \u0633\u06d2 \u062a\u0627\u0644\u06d2 \u0645\u0646\u0633\u0644\u06a9 \u0633\u0631\u06af\u0631\u0645\u06cc \u06a9\u06d2 \u0631\u06a9\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f \u0637\u0648\u06cc\u0644 \u0639\u0631\u0635\u06d2 \u062a\u06a9 \u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-watch-android-vitals-in-play-console\">Play Console \u067e\u0631 Android Vitals \u062f\u06cc\u06a9\u06be\u06cc\u06ba<\/h3>\n<p>\u06af\u0648\u06af\u0644 \u067e\u0644\u06d2 \u0627\u06cc\u0646\u0688\u0631\u0627\u0626\u06cc\u0688 \u0648\u0627\u0626\u0679\u0644\u0632 \u0645\u06cc\u0679\u0631\u06a9 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u062d\u062f \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u062c\u0632\u0648\u06cc \u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u06a9\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0648 \u0679\u0631\u06cc\u06a9 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0635\u0627\u0631\u0641 \u06a9\u06d2 \u0633\u06cc\u0634\u0646 \u06a9\u0648 \u062d\u062f \u0633\u06d2 \u062a\u062c\u0627\u0648\u0632 \u0633\u0645\u062c\u06be\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u0627\u06af\u0631 \u0627\u06cc\u067e \u06a9\u06d2 \u067e\u0627\u0633 \u0628\u06cc\u06a9 \u06af\u0631\u0627\u0624\u0646\u0688 \u0645\u06cc\u06ba \u0631\u06c1\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0627\u06cc\u06a9 \u0637\u0648\u06cc\u0644 \u0645\u062c\u0645\u0648\u0639\u06cc \u0645\u062f\u062a (\u0645\u0648\u062c\u0648\u062f\u06c1 \u062a\u0639\u0631\u06cc\u0641 24 \u06af\u06be\u0646\u0679\u06d2 \u06a9\u06cc \u0648\u0646\u0688\u0648 \u06a9\u06d2 \u0627\u0646\u062f\u0631 2 \u06af\u06be\u0646\u0679\u06d2 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u06c1\u06d2) \u06a9\u06d2 \u0644\u06cc\u06d2 \u0646\u0627\u0642\u0627\u0628\u0644 \u0645\u0639\u0627\u0641\u06cc \u062c\u0632\u0648\u06cc \u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u0631\u06a9\u06be\u062a\u0627 \u06c1\u06d2\u06d4 \u06a9\u0686\u06be \u0633\u0633\u0679\u0645 \u0627\u06cc\u0688\u0645\u0646\u0633\u0679\u0631\u06cc\u0634\u0646 \u0679\u0627\u0633\u06a9\u0633\u060c \u062c\u06cc\u0633\u06d2 \u0622\u0688\u06cc\u0648 \u067e\u0644\u06d2 \u0628\u06cc\u06a9 \u06cc\u0627 \u0645\u062e\u0635\u0648\u0635 \u0642\u0633\u0645 \u06a9\u06d2 \u06a9\u0627\u0645\u0648\u06ba \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06a9\u06be\u0646\u06d2 \u0648\u0627\u0644\u0627 \u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u0645\u0633\u062a\u062b\u0646\u06cc\u0670 \u06c1\u06d2\u06d4<\/p>\n<p>\u067e\u0644\u06d2 \u0646\u06d2 \u0627\u0633\u06d2 \u0627\u06cc\u06a9 \u0627\u06c1\u0645 \u0639\u0646\u0635\u0631 \u0628\u0646\u0627 \u062f\u06cc\u0627 \u06c1\u06d2\u06d4 \u0627\u0633 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u062c\u0648 \u0627\u06cc\u067e\u0633 \u0628\u0631\u06d2 \u0631\u0648\u06cc\u06d2 \u06a9\u06d2 \u0645\u0639\u06cc\u0627\u0631 \u0633\u06d2 \u062a\u062c\u0627\u0648\u0632 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba \u0627\u0646 \u06a9\u06cc \u0627\u0633\u0679\u0648\u0631 \u0645\u06cc\u06ba \u0645\u0631\u0626\u06cc\u062a \u06a9\u0645 \u06c1\u0648 \u0633\u06a9\u062a\u06cc \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u0646 \u06a9\u06cc \u0641\u06c1\u0631\u0633\u062a\u0648\u06ba \u0645\u06cc\u06ba \u0627\u0646\u062a\u0628\u0627\u06c1\u0627\u062a \u0646\u0638\u0631 \u0622 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0639\u06cc\u0646 \u062d\u062f \u0627\u0648\u0631 \u0627\u0633\u062a\u062b\u0646\u06cc\u0670 \u0648\u0642\u062a \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0628\u062f\u0644\u062a\u06d2 \u0631\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0627\u0633 \u0644\u06cc\u06d2 \u062a\u0627\u0632\u06c1 \u062a\u0631\u06cc\u0646 Android Vitals \u062f\u0633\u062a\u0627\u0648\u06cc\u0632\u0627\u062a \u0686\u06cc\u06a9 \u06a9\u0631\u06cc\u06ba\u06d4 \u062a\u0627\u06c1\u0645\u060c \u0639\u0645\u0644\u06cc \u0645\u0636\u0645\u0631\u0627\u062a \u0645\u0633\u062a\u062d\u06a9\u0645 \u06c1\u06cc\u06ba\u06d4 \u0627\u06cc\u06a9 \u0644\u06cc\u06a9\u06cc \u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u0627\u0628 \u0635\u0631\u0641 \u0628\u06cc\u0679\u0631\u06cc \u06a9\u06cc \u0634\u06a9\u0627\u06cc\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u060c \u06cc\u06c1 \u0627\u0633\u0679\u0648\u0631 \u06a9\u06cc \u062f\u0631\u062c\u06c1 \u0628\u0646\u062f\u06cc \u06a9\u0627 \u0645\u0633\u0626\u0644\u06c1 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-enable-lint-checks\">\u0644\u0646\u0679 \u0686\u06cc\u06a9\u0646\u06af \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>Android Lint \u0645\u06cc\u06ba \u062f\u0648 \u0645\u062a\u0639\u0644\u0642\u06c1 \u0686\u06cc\u06a9 \u0634\u0627\u0645\u0644 \u06c1\u06cc\u06ba: <code>Wakelock<\/code> \u0641\u0644\u06cc\u06af \u06a9\u0648\u0688 \u0648\u0627\u0644\u06d2 \u0631\u0627\u0633\u062a\u06d2 \u062c\u06c1\u0627\u06ba \u0627\u06cc\u06a9 \u0644\u0627\u06a9 \u062d\u0627\u0635\u0644 \u06a9\u0631 \u0644\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2 \u0644\u06cc\u06a9\u0646 \u0627\u0633\u06d2 \u062c\u0627\u0631\u06cc \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627\u06d4 <code>WakelockTimeout<\/code> \u062c\u06be\u0646\u0688\u06d2 \u0628\u063a\u06cc\u0631 \u0679\u0627\u0626\u0645 \u0622\u0624\u0679 \u06a9\u06d2 \u062c\u06cc\u062a \u062c\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u062f\u0648\u0646\u0648\u06ba \u0628\u0637\u0648\u0631 \u0627\u0646\u062a\u0628\u0627\u06c1 \u0628\u0637\u0648\u0631 \u0688\u06cc\u0641\u0627\u0644\u0679 \u0641\u0639\u0627\u0644 \u06c1\u06cc\u06ba\u06d4 \u0627\u06af\u0631 \u06a9\u0648\u0626\u06cc \u063a\u0644\u0637\u06cc \u06c1\u0648 \u062c\u0627\u0626\u06d2\u06d4 <code>lint.xml<\/code> \u06cc\u0627 \u0622\u067e \u06a9\u06cc \u06af\u0631\u06cc\u0688\u0644 \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 \u0646\u0626\u06cc \u0644\u06cc\u06a9\u0633 \u06a9\u0648 \u0636\u0645 \u06a9\u0631\u0646\u0627 \u0628\u0646\u062f \u06a9\u0631 \u062f\u06cc\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-kotlin\">android {\n    lint {\n        error += listOf(\"Wakelock\", \"WakelockTimeout\")\n    }\n}\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u06af\u0631\u06cc\u0688\u0644 \u0628\u0644\u0627\u06a9 \u0627\u0646\u062a\u0628\u0627\u06c1 \u0633\u06d2 \u063a\u0644\u0637\u06cc \u062a\u06a9 \u062f\u0648\u0646\u0648\u06ba \u0686\u06cc\u06a9\u0648\u06ba \u06a9\u0648 \u0641\u0631\u0648\u063a \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u060c \u0644\u06c1\u0630\u0627 \u0627\u06af\u0631 \u06a9\u0633\u06cc \u0628\u06be\u06cc \u067e\u06cc\u0679\u0631\u0646 \u06a9\u0627 \u0633\u0627\u0645\u0646\u0627 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u062a\u0639\u0645\u06cc\u0631 \u0646\u0627\u06a9\u0627\u0645 \u06c1\u0648\u062c\u0627\u0626\u06d2 \u06af\u06cc\u06d4 Lint \u062c\u0627\u0645\u062f \u06c1\u06d2 \u0627\u0648\u0631 \u06c1\u0631 \u063a\u06cc\u0631 \u0645\u0637\u0627\u0628\u0642\u062a \u067e\u0630\u06cc\u0631 \u0631\u0627\u0633\u062a\u06d2 \u06a9\u06cc \u067e\u06cc\u0631\u0648\u06cc \u0646\u06c1\u06cc\u06ba \u06a9\u0631 \u0633\u06a9\u062a\u0627\u060c \u0644\u06c1\u0630\u0627 \u06cc\u06c1 \u067e\u06c1\u0644\u06d2 \u0628\u06cc\u0627\u0646 \u06a9\u0631\u062f\u06c1 \u06a9\u0627\u0644 \u0628\u06cc\u06a9 \u0644\u06cc\u06a9\u0633 \u06a9\u0648 \u0646\u06c1\u06cc\u06ba \u067e\u06a9\u0691\u062a\u0627\u060c \u0644\u06cc\u06a9\u0646 \u06cc\u06c1 \u0633\u0627\u062f\u06c1 \u06a9\u06cc\u0633\u0632 \u06a9\u0648 \u0633\u0633\u062a\u06d2 \u0645\u06cc\u06ba \u067e\u06a9\u0691\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-how-to-test-wake-lock-behavior\">\u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u0633\u0644\u0648\u06a9 \u06a9\u06cc \u062c\u0627\u0646\u0686 \u06a9\u06cc\u0633\u06d2 \u06a9\u0631\u06cc\u06ba\u06d4<\/h2>\n<p>\u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u06a9\u0648 \u06c1\u06cc\u0646\u0688\u0644 \u06a9\u0631\u0646\u0627 \u0631\u0648\u0628\u0648 \u0627\u0644\u06cc\u06a9\u0679\u0631\u06a9 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u06cc\u0648\u0646\u0679 \u0679\u06cc\u0633\u0679 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0622\u0633\u0627\u0646\u06cc \u0633\u06d2 \u06c1\u06cc\u0646\u0688\u0644 \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u060c \u062c\u0648 \u062f\u0631\u062c \u0630\u06cc\u0644 \u0634\u06cc\u0688\u0648 \u0646\u0641\u0627\u0630 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2: <code>PowerManager<\/code>.<\/p>\n<pre><code class=\"language-kotlin\">@RunWith(RobolectricTestRunner::class)\nclass ContactSyncTest {\n\n    @Test\n    fun releasesWakeLockWhenSyncFails() {\n        val context = ApplicationProvider.getApplicationContext<context>()\n        val syncer = ContactSyncer(context, api = FailingApi())\n\n        runCatching { syncer.syncContacts() }\n\n        val lock = ShadowPowerManager.getLatestWakeLock()\n        assertThat(lock).isNotNull()\n        assertThat(lock.isHeld).isFalse()\n    }\n}\n<\/context><\/code><\/pre>\n<p>\u0679\u06cc\u0633\u0679 \u062c\u0639\u0644\u06cc API \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0679\u06cc\u0633\u0679 \u06a9\u06d2 \u062a\u062d\u062a \u062c\u0632\u0648 \u0628\u0646\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062c\u0648 \u06c1\u0645\u06cc\u0634\u06c1 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4 \u0645\u0637\u0627\u0628\u0642\u062a \u067e\u0630\u06cc\u0631\u06cc \u06a9\u0648 \u0686\u0644\u0627\u0626\u06cc\u06ba\u060c \u06a9\u0633\u06cc \u0628\u06be\u06cc \u0627\u0633\u062a\u062b\u0646\u0627\u0621 \u06a9\u0648 \u0646\u0638\u0631 \u0627\u0646\u062f\u0627\u0632 \u06a9\u0631\u06cc\u06ba\u060c \u0627\u0648\u0631 \u067e\u06be\u0631 Robolectric \u0633\u06d2 \u062d\u0627\u0644 \u06c1\u06cc \u0645\u06cc\u06ba \u0628\u0646\u0627\u0626\u06d2 \u06af\u0626\u06d2 \u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u06a9\u06d2 \u0644\u06cc\u06d2 \u067e\u0648\u0686\u06be\u06cc\u06ba\u06d4<\/p>\n<p>\u062f\u0648\u0646\u0648\u06ba \u062f\u0639\u0648\u06d2 \u0627\u0633 \u0628\u0627\u062a \u06a9\u06cc \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06c1 \u062a\u0627\u0644\u0627 \u062f\u0631\u0627\u0635\u0644 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u062a\u06be\u0627 \u0627\u0648\u0631 \u06cc\u06c1 \u06a9\u06c1 \u0646\u0627\u06a9\u0627\u0645\u06cc \u06a9\u06d2 \u0628\u0639\u062f \u0627\u0633\u06d2 \u0645\u0632\u06cc\u062f \u0645\u0646\u0639\u0642\u062f \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2 \u06af\u0627\u06d4 \u0627\u0633 \u0637\u0631\u062d \u06a9\u06d2 \u0679\u06cc\u0633\u0679 \u062a\u0645\u0627\u0645 \u062e\u0631\u0627\u0628\u06cc \u06a9\u06d2 \u0631\u0627\u0633\u062a\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u0644\u06a9\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0633\u0633\u062a\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u062c\u0627\u0626\u0632\u06d2 \u0645\u06cc\u06ba \u0627\u0646\u062a\u06c1\u0627\u0626\u06cc \u0645\u0634\u06a9\u0644 \u0627\u0633\u062a\u062b\u0646\u06cc\u0670 \u0627\u0648\u0631 \u0642\u0628\u0644 \u0627\u0632 \u0648\u0642\u062a \u0648\u0627\u067e\u0633\u06cc \u06a9\u06d2 \u0644\u06cc\u06a9 \u06a9\u0648 \u062f\u0631\u0633\u062a \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u067e\u06a9\u0691\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0627\u0646\u062c\u06a9\u0634\u0646 <code>WakeLock<\/code> (\u06cc\u0627 \u0627\u0633 \u06a9\u06d2 \u0627\u0631\u062f \u06af\u0631\u062f \u0627\u06cc\u06a9 \u0686\u06be\u0648\u0679\u0627 \u0631\u06cc\u067e\u0631 \u0627\u0646\u0679\u0631\u0641\u06cc\u0633) \u0622\u067e \u06a9\u06cc \u06a9\u0644\u0627\u0633 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06cc\u06c1 \u0622\u0633\u0627\u0646 \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2\u060c \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u0622\u067e \u0631\u0648\u0628\u0648 \u0627\u0644\u06cc\u06a9\u0679\u0631\u06a9 \u06a9\u06d2 \u0628\u063a\u06cc\u0631 \u0633\u0627\u062f\u06c1 \u062c\u0639\u0644\u06cc \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h2 id=\"heading-wake-locks-below-the-framework\">\u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u06a9\u06d2 \u062a\u062d\u062a \u0648\u06cc\u06a9 \u0644\u0627\u06a9<\/h2>\n<p>\u0627\u06af\u0631 \u0622\u067e \u067e\u0644\u06cc\u0679 \u0641\u0627\u0631\u0645 \u06a9\u0648\u0688\u060c HAL\u060c \u06cc\u0627 \u0628\u0646\u06cc\u0627\u062f\u06cc \u0688\u06cc\u0645\u0648\u0646 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u06a9\u0627\u0645 \u06a9\u0631 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0622\u067e \u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u06a9\u0648 \u0627\u06cc\u06a9 \u067e\u0631\u062a \u0646\u06cc\u0686\u06d2 \u06c1\u06cc\u0646\u0688\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0645\u0642\u0627\u0645\u06cc \u06a9\u0648\u0688 \u06a9\u06c1\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 <code>acquire_wake_lock()<\/code> \u0627\u0648\u0631 <code>release_wake_lock()<\/code> \u0633\u06d2 <code>libpower<\/code>\u0645\u0648\u062c\u0648\u062f\u06c1 \u0627\u06cc\u0646\u0688\u0631\u0627\u0626\u06cc\u0688 \u0648\u0631\u0698\u0646\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u06cc\u06c1 \u0627\u0642\u062f\u0627\u0645\u0627\u062a \u06c1\u06cc\u06ba: <code>SystemSuspend<\/code> \u0627\u06cc\u06a9 \u062e\u062f\u0645\u062a \u062c\u0648 \u062f\u0627\u0646\u0627 \u06a9\u06d2 \u0627\u0646\u0679\u0631\u0641\u06cc\u0633 \u06a9\u06cc \u0645\u0627\u0644\u06a9 \u06c1\u06d2\u06d4 <code>\/sys\/power\/wake_lock<\/code> \u0641\u0627\u0626\u0644<\/p>\n<p>\u0627\u06d2 \u0622\u0626\u06cc \u0688\u06cc \u0627\u06cc\u0644 \u0627\u0646\u0679\u0631\u0641\u06cc\u0633 <code>SystemSuspend<\/code> \u0648\u0627\u067e\u0633\u06cc <code>IWakeLock<\/code> \u0627\u0639\u062a\u0631\u0627\u0636 \u06a9\u0627 <code>acquireWakeLock()<\/code>. \u062a\u0627\u0644\u06d2 \u06a9\u0648 \u062a\u0628 \u062a\u06a9 \u0631\u06a9\u06be\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u062c\u0628 \u062a\u06a9 \u0622\u0628\u062c\u06cc\u06a9\u0679 \u0632\u0646\u062f\u06c1 \u0631\u06c1\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0622\u062e\u0631\u06cc \u062d\u0648\u0627\u0644\u06c1 \u062d\u0630\u0641 \u06c1\u0648\u0646\u06d2 \u067e\u0631 \u062c\u0627\u0631\u06cc \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0645\u0642\u0627\u0645\u06cc \u06a9\u0648\u0688 \u06a9\u0648 \u06a9\u0648\u0679\u0644\u0646 \u06a9\u06cc \u0637\u0631\u062d \u0644\u0645\u0628\u06cc \u0639\u0645\u0631 \u06a9\u0627 \u062f\u0627\u0626\u0631\u06c1 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 <code>finally<\/code> \u067e\u06cc\u0679\u0631\u0646<\/p>\n<p>\u062f\u0627\u0646\u0627 \u062c\u0627\u06af\u0646\u06d2 \u06a9\u06d2 \u0630\u0631\u0627\u0626\u0639 \u06a9\u06cc \u0645\u06a9\u0645\u0644 \u0641\u06c1\u0631\u0633\u062a \u06a9\u0648 \u0638\u0627\u06c1\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 (\u0628\u0634\u0645\u0648\u0644 \u0688\u0631\u0627\u0626\u06cc\u0648\u0631 \u06a9\u06d2 \u067e\u0627\u0633 \u0645\u0648\u062c\u0648\u062f)\u06d4 <code>PowerManagerService<\/code>) \u0646\u06cc\u0686\u06d2 <code>\/sys\/class\/wakeup\/<\/code> \u062d\u0627\u0644\u06cc\u06c1 \u062f\u0627\u0646\u0627 \u0645\u06cc\u06ba \u06cc\u0627 <code>\/sys\/kernel\/debug\/wakeup_sources<\/code> \u0688\u06cc\u0628\u06af \u06a9\u06d2 \u0633\u0627\u062a\u06be \u067e\u0631\u0627\u0646\u06d2 \u0645\u06cc\u06ba\u06d4 \u067e\u0691\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0639\u0644\u06cc\u0670 \u0645\u0631\u0627\u0639\u0627\u062a \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u06d4 \u062c\u0628 <code>dumpsys power<\/code> \u0627\u06af\u0631 \u0622\u067e \u06a9\u0648 \u0627\u06cc\u067e \u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u0646\u0638\u0631 \u0646\u06c1\u06cc\u06ba \u0622\u062a\u0627 \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u0688\u06cc\u0648\u0627\u0626\u0633 \u067e\u06be\u0631 \u0628\u06be\u06cc \u0645\u0639\u0637\u0644 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u0627\u0646\u06a9\u0627\u0631 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u060c \u062a\u0648 \u06cc\u06c1 \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 \u0688\u0631\u0627\u0626\u06cc\u0648\u0631 \u06cc\u0627 \u0688\u06cc\u0641\u0627\u0644\u0679 \u0688\u06cc\u0645\u0648\u0646 \u06c1\u0648\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u06a9\u0631\u0646\u0644 \u0648\u06cc\u06a9 \u0633\u0648\u0631\u0633 \u0631\u06a9\u06be\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u06cc\u06c1 \u0641\u0627\u0626\u0644 \u0622\u067e \u06a9\u0648 \u062f\u06a9\u06be\u0627\u0626\u06d2 \u06af\u06cc \u06a9\u06c1 \u06a9\u0648\u0646 \u0633\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-summary\">\u062e\u0644\u0627\u0635\u06c1<\/h2>\n<p>\u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u0633\u0633\u0679\u0645 \u06a9\u0648 \u0628\u062a\u0627\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0627\u0633\u06a9\u0631\u06cc\u0646 \u0622\u0641 \u06c1\u0648\u0646\u06d2 \u067e\u0631 \u0628\u06be\u06cc \u06a9\u0686\u06be \u06a9\u0648\u0688 \u06a9\u0648 CPU \u06a9\u0648 \u0628\u06cc\u062f\u0627\u0631 \u0631\u06a9\u06be\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u06d4 \u0627\u06cc\u067e \u0644\u06cc\u0648\u0644 \u0648\u06cc\u06a9 \u0644\u0627\u06a9\u0632 \u06a9\u0627 \u0627\u0646\u062a\u0638\u0627\u0645 \u0627\u0633 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2: <code>PowerManagerService<\/code>UID \u0627\u0648\u0631 \u0679\u06cc\u06af \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u062a\u0645\u0627\u0645 \u062a\u0627\u0644\u06d2 \u06a9\u0648 \u0679\u0631\u06cc\u06a9 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u062a\u0645\u0627\u0645 \u062a\u0627\u0644\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u06c1\u06cc \u06a9\u0631\u0646\u0644 \u0648\u06cc\u06a9 \u0627\u067e \u0633\u0648\u0631\u0633 \u0631\u06a9\u06be\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u06cc\u06c1 \u063a\u06cc\u0631 \u0645\u0642\u0641\u0644 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u0627\u0633\u06d2 \u062c\u0627\u06af\u062a\u06d2 \u0631\u06c1\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0646\u062a\u062e\u0628 \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u0622\u0644\u06c1 \u0631\u06a9\u06d2 \u06af\u0627 \u0646\u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0628\u06cc\u0679\u0631\u06cc \u0627\u0633 \u0648\u0642\u062a \u062a\u06a9 \u062e\u062a\u0645 \u06c1\u0648 \u062c\u0627\u0626\u06d2 \u06af\u0627 \u062c\u0628 \u062a\u06a9 \u06a9\u06c1 \u0627\u0633 \u06a9\u0627 \u0648\u0642\u062a \u062e\u062a\u0645 \u0646\u06c1 \u06c1\u0648 \u062c\u0627\u0626\u06d2 \u06cc\u0627 \u0639\u0645\u0644 \u062e\u062a\u0645 \u0646\u06c1 \u06c1\u0648 \u062c\u0627\u0626\u06d2\u06d4<\/p>\n<p>\u0632\u06cc\u0627\u062f\u06c1 \u062a\u0631 \u0631\u0633\u0627\u0648 \u0639\u0627\u0645 \u06a9\u0646\u0679\u0631\u0648\u0644 \u06a9\u06d2 \u0628\u06c1\u0627\u0624 \u0645\u06cc\u06ba \u06c1\u0648\u062a\u0627 \u06c1\u06d2 (\u0627\u0633\u062a\u062b\u0646\u0627\u0621 \u0627\u0648\u0631 \u0642\u0628\u0644 \u0627\u0632 \u0648\u0642\u062a \u0648\u0627\u067e\u0633\u06cc \u06a9\u0648 \u0686\u06be\u0648\u0691 \u062f\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2)\u06d4 <code>release()<\/code>\u0627\u06cc\u0633\u06cc \u062e\u0631\u0627\u0628\u06cc \u0648\u0627\u0644\u06cc \u06a9\u0627\u0644 \u0628\u06cc\u06a9\u0633 \u06c1\u06cc\u06ba \u062c\u0646\u06c1\u06cc\u06ba \u0622\u067e \u062c\u0627\u0631\u06cc \u06a9\u0631\u0646\u0627 \u0628\u06be\u0648\u0644 \u062c\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062d\u0648\u0627\u0644\u06c1 \u0634\u0645\u0627\u0631 \u062c\u0648 \u062a\u0648\u0627\u0632\u0646 \u0633\u06d2 \u0628\u0627\u06c1\u0631 \u06c1\u06cc\u06ba\u060c \u0627\u0648\u0631 \u0645\u06a9\u0645\u0644 \u0646\u06c1 \u06c1\u0648\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u06a9\u0627\u0645\u0648\u06ba \u067e\u0631 \u062a\u0627\u0644\u06d2 \u0644\u06af \u062c\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u062a\u0631\u0645\u06cc\u0645\u0627\u062a \u0628\u06be\u06cc \u0627\u062a\u0646\u06cc \u06c1\u06cc \u063a\u06cc\u0631 \u0645\u0639\u0645\u0648\u0644\u06cc \u06c1\u06cc\u06ba\u06d4 \u06c1\u0645\u06cc\u0634\u06c1 \u0679\u0627\u0626\u0645 \u0622\u0624\u0679 \u067e\u0627\u0633 \u06a9\u0631\u06cc\u06ba \u0627\u0648\u0631 \u062a\u06be\u0648\u0691\u06cc \u062f\u06cc\u0631 \u0628\u0639\u062f \u0631\u06cc\u0644\u06cc\u0632 \u06a9\u0631\u06cc\u06ba\u06d4 <code>finally<\/code> \u0628\u0644\u0627\u06a9\u0633 (\u0645\u062b\u0627\u0644\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0627\u06cc\u06a9 \u0686\u06be\u0648\u0679\u06d2 \u0645\u062f\u062f\u06af\u0627\u0631 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 <code>withLock<\/code>)\u060c \u06c1\u0631 \u0679\u0627\u0633\u06a9 \u06a9\u0648 \u0645\u0646\u0641\u0631\u062f \u0637\u0648\u0631 \u067e\u0631 \u0679\u06cc\u06af \u0634\u062f\u06c1 \u0644\u0627\u06a9 \u062f\u06cc\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0644\u0627\u06a9 \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u06a9\u0627\u0645\u0648\u06ba \u067e\u0631 \u0627\u06cc\u06a9 \u0645\u0642\u0631\u0631\u06c1 \u062a\u0627\u0631\u06cc\u062e \u0633\u06cc\u0679 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0632\u06cc\u0627\u062f\u06c1 \u062a\u0631 \u0645\u0639\u0627\u0645\u0644\u0627\u062a \u0645\u06cc\u06ba\u060c \u0627\u06cc\u06a9 \u0628\u06c1\u062a\u0631 \u0627\u0646\u062a\u062e\u0627\u0628 \u062f\u0633\u062a\u06cc \u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u0633\u06d2 \u0645\u06a9\u0645\u0644 \u0637\u0648\u0631 \u067e\u0631 \u06af\u0631\u06cc\u0632 \u06a9\u0631\u0646\u0627 \u06c1\u06d2\u06d4 \u0648\u0631\u06a9 \u0645\u06cc\u0646\u06cc\u062c\u0631\u060c \u062c\u0627\u0628 \u0634\u06cc\u0688\u06cc\u0648\u0644\u0631\u060c <code>goAsync()<\/code>\u067e\u06cc\u0634 \u0645\u0646\u0638\u0631 \u06a9\u06cc \u062e\u062f\u0645\u062a \u0627\u0648\u0631 <code>FLAG_KEEP_SCREEN_ON<\/code> \u06c1\u0631 \u06a9\u0648\u0626\u06cc \u0622\u067e \u06a9\u06d2 \u0644\u06cc\u06d2 \u062a\u0627\u0644\u06d2 \u06a9\u0627 \u0627\u0646\u062a\u0638\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u062c\u0628 \u0622\u067e \u06a9\u0627\u0645 \u06a9\u0631 \u0644\u06cc\u062a\u06d2 \u06c1\u06cc\u06ba \u062a\u0648 \u0627\u0646\u06c1\u06cc\u06ba \u06a9\u06be\u0648\u0644 \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u0622\u067e \u06a9\u0648 \u0648\u0627\u0642\u0639\u06cc \u0627\u0633 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2 \u062a\u0648 \u0627\u0633\u06d2 \u06cc\u06c1\u0627\u06ba \u0686\u06cc\u06a9 \u06a9\u0631\u06cc\u06ba: <code>dumpsys power<\/code>, <code>batterystats<\/code>\u067e\u0631\u0641\u06cc\u0679\u0648 \u06cc\u0627 \u0628\u06cc\u0679\u0631\u06cc \u06c1\u0633\u0679\u0648\u0631\u06cc\u0646\u060c \u0644\u0650\u0646\u0679\u060c \u0627\u0648\u0631 \u063a\u0644\u0637\u06cc \u06a9\u06d2 \u0631\u0627\u0633\u062a\u0648\u06ba \u06a9\u0627 \u0627\u062d\u0627\u0637\u06c1 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u06cc\u0648\u0646\u0679 \u0679\u06cc\u0633\u0679\u06d4<\/p>\n<p>Play \u0627\u0628 \u0636\u0631\u0648\u0631\u062a \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0648\u06cc\u06a9 \u0644\u0627\u06a9\u0633 \u06a9\u0648 \u0627\u06cc\u06a9 \u0627\u06c1\u0645 \u0639\u0646\u0635\u0631 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u062f\u06cc\u06a9\u06be\u062a\u0627 \u06c1\u06d2\u060c \u0644\u06c1\u0630\u0627 \u0631\u06cc\u0644\u06cc\u0632 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0627\u0646 \u0644\u06cc\u06a9\u0633 \u06a9\u0648 \u067e\u06a9\u0691\u0646\u0627 \u0622\u067e \u06a9\u06d2 \u0635\u0627\u0631\u0641\u06cc\u0646 \u06a9\u06cc \u0628\u06cc\u0679\u0631\u06cc \u0627\u0648\u0631 \u0627\u0633\u0679\u0648\u0631 \u0645\u06cc\u06ba \u0622\u067e \u06a9\u06cc \u0627\u06cc\u067e \u06a9\u06cc \u0645\u0631\u0626\u06cc\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06c1\u0645 \u06c1\u06d2\u06d4<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u0648\u06cc\u06a9 \u0644\u0627\u06a9 \u0627\u06cc\u0646\u0688\u0631\u0627\u0626\u06cc\u0688 \u06a9\u06d2 \u0622\u0633\u0627\u0646 \u062a\u0631\u06cc\u0646 APIs \u0645\u06cc\u06ba \u0633\u06d2 \u0627\u06cc\u06a9 \u06c1\u06d2 \u0627\u0648\u0631 \u063a\u0644\u0637 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u0645\u06cc\u06ba \u0622\u0633\u0627\u0646 \u062a\u0631\u06cc\u0646 \u06c1\u06d2\u06d4 \u0627\u0633\u06d2 \u062d\u0627\u0635\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u0648\u0688 \u06a9\u06cc \u0627\u06cc\u06a9 \u0644\u0627\u0626\u0646 \u0644\u06af\u062a\u06cc \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u0622\u067e \u0627\u0633\u06d2 \u0622\u0641 \u06a9\u0631\u0646\u0627 \u0628\u06be\u0648\u0644 \u062c\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0622\u067e \u06a9\u06d2 \u0641\u0648\u0646 \u06a9\u0627 CPU \u06af\u06be\u0646\u0679\u0648\u06ba \u062a\u06a9 \u0641\u0639\u0627\u0644 \u0631\u06c1\u06d2 \u06af\u0627\u060c \u0622\u067e \u06a9\u06cc \u0628\u06cc\u0679\u0631\u06cc \u0631\u0627\u062a\u0648\u06ba \u0631\u0627\u062a \u062e\u062a\u0645 [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1],"tags":[],"class_list":["post-30221","post","type-post","status-publish","format-standard","hentry","category-blog"],"_links":{"self":[{"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/posts\/30221","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/comments?post=30221"}],"version-history":[{"count":0,"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/posts\/30221\/revisions"}],"wp:attachment":[{"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/media?parent=30221"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/categories?post=30221"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/tags?post=30221"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}