WakefulBroadcastReceiver.smali 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288
  1. .class public abstract Landroid/support/v4/content/WakefulBroadcastReceiver;
  2. .super Landroid/content/BroadcastReceiver;
  3. .source "WakefulBroadcastReceiver.java"
  4. # static fields
  5. .field private static final EXTRA_WAKE_LOCK_ID:Ljava/lang/String; = "android.support.content.wakelockid"
  6. .field private static final mActiveWakeLocks:Landroid/util/SparseArray;
  7. .annotation system Ldalvik/annotation/Signature;
  8. value = {
  9. "Landroid/util/SparseArray",
  10. "<",
  11. "Landroid/os/PowerManager$WakeLock;",
  12. ">;"
  13. }
  14. .end annotation
  15. .end field
  16. .field private static mNextId:I
  17. # direct methods
  18. .method static constructor <clinit>()V
  19. .locals 1
  20. .prologue
  21. .line 62
  22. new-instance v0, Landroid/util/SparseArray;
  23. invoke-direct {v0}, Landroid/util/SparseArray;-><init>()V
  24. sput-object v0, Landroid/support/v4/content/WakefulBroadcastReceiver;->mActiveWakeLocks:Landroid/util/SparseArray;
  25. .line 64
  26. const/4 v0, 0x1
  27. sput v0, Landroid/support/v4/content/WakefulBroadcastReceiver;->mNextId:I
  28. return-void
  29. .end method
  30. .method public constructor <init>()V
  31. .locals 0
  32. .prologue
  33. .line 59
  34. invoke-direct {p0}, Landroid/content/BroadcastReceiver;-><init>()V
  35. return-void
  36. .end method
  37. .method public static completeWakefulIntent(Landroid/content/Intent;)Z
  38. .locals 7
  39. .param p0, "intent" # Landroid/content/Intent;
  40. .prologue
  41. const/4 v3, 0x1
  42. const/4 v2, 0x0
  43. .line 113
  44. const-string v4, "android.support.content.wakelockid"
  45. invoke-virtual {p0, v4, v2}, Landroid/content/Intent;->getIntExtra(Ljava/lang/String;I)I
  46. move-result v0
  47. .line 114
  48. .local v0, "id":I
  49. if-nez v0, :cond_0
  50. .line 131
  51. :goto_0
  52. return v2
  53. .line 117
  54. :cond_0
  55. sget-object v4, Landroid/support/v4/content/WakefulBroadcastReceiver;->mActiveWakeLocks:Landroid/util/SparseArray;
  56. monitor-enter v4
  57. .line 118
  58. :try_start_0
  59. sget-object v2, Landroid/support/v4/content/WakefulBroadcastReceiver;->mActiveWakeLocks:Landroid/util/SparseArray;
  60. invoke-virtual {v2, v0}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
  61. move-result-object v1
  62. check-cast v1, Landroid/os/PowerManager$WakeLock;
  63. .line 119
  64. .local v1, "wl":Landroid/os/PowerManager$WakeLock;
  65. if-eqz v1, :cond_1
  66. .line 120
  67. invoke-virtual {v1}, Landroid/os/PowerManager$WakeLock;->release()V
  68. .line 121
  69. sget-object v2, Landroid/support/v4/content/WakefulBroadcastReceiver;->mActiveWakeLocks:Landroid/util/SparseArray;
  70. invoke-virtual {v2, v0}, Landroid/util/SparseArray;->remove(I)V
  71. .line 122
  72. monitor-exit v4
  73. move v2, v3
  74. goto :goto_0
  75. .line 130
  76. :cond_1
  77. const-string v2, "WakefulBroadcastReceiver"
  78. new-instance v5, Ljava/lang/StringBuilder;
  79. invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
  80. const-string v6, "No active wake lock id #"
  81. invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  82. move-result-object v5
  83. invoke-virtual {v5, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
  84. move-result-object v5
  85. invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  86. move-result-object v5
  87. invoke-static {v2, v5}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I
  88. .line 131
  89. monitor-exit v4
  90. move v2, v3
  91. goto :goto_0
  92. .line 132
  93. .end local v1 # "wl":Landroid/os/PowerManager$WakeLock;
  94. :catchall_0
  95. move-exception v2
  96. monitor-exit v4
  97. :try_end_0
  98. .catchall {:try_start_0 .. :try_end_0} :catchall_0
  99. throw v2
  100. .end method
  101. .method public static startWakefulService(Landroid/content/Context;Landroid/content/Intent;)Landroid/content/ComponentName;
  102. .locals 8
  103. .param p0, "context" # Landroid/content/Context;
  104. .param p1, "intent" # Landroid/content/Intent;
  105. .prologue
  106. .line 81
  107. sget-object v5, Landroid/support/v4/content/WakefulBroadcastReceiver;->mActiveWakeLocks:Landroid/util/SparseArray;
  108. monitor-enter v5
  109. .line 82
  110. :try_start_0
  111. sget v1, Landroid/support/v4/content/WakefulBroadcastReceiver;->mNextId:I
  112. .line 83
  113. .local v1, "id":I
  114. sget v4, Landroid/support/v4/content/WakefulBroadcastReceiver;->mNextId:I
  115. add-int/lit8 v4, v4, 0x1
  116. sput v4, Landroid/support/v4/content/WakefulBroadcastReceiver;->mNextId:I
  117. .line 84
  118. sget v4, Landroid/support/v4/content/WakefulBroadcastReceiver;->mNextId:I
  119. if-gtz v4, :cond_0
  120. .line 85
  121. const/4 v4, 0x1
  122. sput v4, Landroid/support/v4/content/WakefulBroadcastReceiver;->mNextId:I
  123. .line 88
  124. :cond_0
  125. const-string v4, "android.support.content.wakelockid"
  126. invoke-virtual {p1, v4, v1}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;
  127. .line 89
  128. invoke-virtual {p0, p1}, Landroid/content/Context;->startService(Landroid/content/Intent;)Landroid/content/ComponentName;
  129. move-result-object v0
  130. .line 90
  131. .local v0, "comp":Landroid/content/ComponentName;
  132. if-nez v0, :cond_1
  133. .line 91
  134. const/4 v0, 0x0
  135. monitor-exit v5
  136. .line 100
  137. .end local v0 # "comp":Landroid/content/ComponentName;
  138. :goto_0
  139. return-object v0
  140. .line 94
  141. .restart local v0 # "comp":Landroid/content/ComponentName;
  142. :cond_1
  143. const-string v4, "power"
  144. invoke-virtual {p0, v4}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
  145. move-result-object v2
  146. check-cast v2, Landroid/os/PowerManager;
  147. .line 95
  148. .local v2, "pm":Landroid/os/PowerManager;
  149. const/4 v4, 0x1
  150. new-instance v6, Ljava/lang/StringBuilder;
  151. invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V
  152. const-string v7, "wake:"
  153. invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  154. move-result-object v6
  155. invoke-virtual {v0}, Landroid/content/ComponentName;->flattenToShortString()Ljava/lang/String;
  156. move-result-object v7
  157. invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  158. move-result-object v6
  159. invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  160. move-result-object v6
  161. invoke-virtual {v2, v4, v6}, Landroid/os/PowerManager;->newWakeLock(ILjava/lang/String;)Landroid/os/PowerManager$WakeLock;
  162. move-result-object v3
  163. .line 97
  164. .local v3, "wl":Landroid/os/PowerManager$WakeLock;
  165. const/4 v4, 0x0
  166. invoke-virtual {v3, v4}, Landroid/os/PowerManager$WakeLock;->setReferenceCounted(Z)V
  167. .line 98
  168. const-wide/32 v6, 0xea60
  169. invoke-virtual {v3, v6, v7}, Landroid/os/PowerManager$WakeLock;->acquire(J)V
  170. .line 99
  171. sget-object v4, Landroid/support/v4/content/WakefulBroadcastReceiver;->mActiveWakeLocks:Landroid/util/SparseArray;
  172. invoke-virtual {v4, v1, v3}, Landroid/util/SparseArray;->put(ILjava/lang/Object;)V
  173. .line 100
  174. monitor-exit v5
  175. goto :goto_0
  176. .line 101
  177. .end local v0 # "comp":Landroid/content/ComponentName;
  178. .end local v1 # "id":I
  179. .end local v2 # "pm":Landroid/os/PowerManager;
  180. .end local v3 # "wl":Landroid/os/PowerManager$WakeLock;
  181. :catchall_0
  182. move-exception v4
  183. monitor-exit v5
  184. :try_end_0
  185. .catchall {:try_start_0 .. :try_end_0} :catchall_0
  186. throw v4
  187. .end method