修改点:对流氓软件做特殊处理,强制增加wakelock超时处理
测试建议:打开流氓软件应用,使用adb shell dumpsys power确认其持锁,2分钟后重新查看其锁消失
base/core/java/android/os/PowerManager.java | 31 +++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)
diff –git a/base/core/java/android/os/PowerManager.java
— a/base/core/java/android/os/PowerManager.java
+++ b/base/core/java/android/os/PowerManager.java
@@ -1108,9 +1108,32 @@ public final class PowerManager {
public void acquire() {
synchronized (mToken) {
acquireLocked();
+ /* 20171012 add, begin */
+ /* A temporary solution for special package, it’s bad somehow */
+ if(mPackageName != null && mPackageName.equals(“com.example.businesshall”)){
+ mHandler.postDelayed(mDefReleaser, 2 * 60 * 1000);
+ }
+ /* 20171012 add, end */
}
}
- /* 20171012 add, begin */
- private final Runnable mDefReleaser = new Runnable() {
- public void run() {
- synchronized (mToken) {
- if (mHeld) {
- Trace.asyncTraceEnd(Trace.TRACE_TAG_POWER, mTraceName, 0);
- try {
- Log.v(TAG, “force release wakelock for GMS!”);
- mService.releaseWakeLock(mToken, 0);
- } catch (RemoteException e) {
- }
- mHeld = false;
- }
- }
- }
- };
- /* 20171012 add, end */
/**
* Acquires the wake lock with a timeout.
*
@@ -1124,6 +1147,14 @@ public final class PowerManager {
public void acquire(long timeout) {
synchronized (mToken) {
acquireLocked(); - /* 20171012 add, begin */
- /* A temporary solution for special package, it’s bad somehow */
- if(mPackageName != null && mPackageName.equals(“com.example.businesshall”)){
- if(timeout >= 5 * 60 * 1000){
- timeout = 5 * 60 * 1000;
- }
- }
- /* 20171012 add, end */
mHandler.postDelayed(mReleaser, timeout);
}
}