AsyncLayoutInflater$InflateThread.smali 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. .class Landroid/support/v4/view/AsyncLayoutInflater$InflateThread;
  2. .super Ljava/lang/Thread;
  3. .source ""
  4. # annotations
  5. .annotation system Ldalvik/annotation/EnclosingClass;
  6. value = Landroid/support/v4/view/AsyncLayoutInflater;
  7. .end annotation
  8. .annotation system Ldalvik/annotation/InnerClass;
  9. accessFlags = 0xa
  10. name = "InflateThread"
  11. .end annotation
  12. # static fields
  13. .field private static final sInstance:Landroid/support/v4/view/AsyncLayoutInflater$InflateThread;
  14. # instance fields
  15. .field private mQueue:Ljava/util/concurrent/ArrayBlockingQueue;
  16. .annotation system Ldalvik/annotation/Signature;
  17. value = {
  18. "Ljava/util/concurrent/ArrayBlockingQueue<",
  19. "Landroid/support/v4/view/AsyncLayoutInflater$InflateRequest;",
  20. ">;"
  21. }
  22. .end annotation
  23. .end field
  24. .field private mRequestPool:Landroid/support/v4/util/Pools$SynchronizedPool;
  25. .annotation system Ldalvik/annotation/Signature;
  26. value = {
  27. "Landroid/support/v4/util/Pools$SynchronizedPool<",
  28. "Landroid/support/v4/view/AsyncLayoutInflater$InflateRequest;",
  29. ">;"
  30. }
  31. .end annotation
  32. .end field
  33. # direct methods
  34. .method static constructor <clinit>()V
  35. .locals 1
  36. new-instance v0, Landroid/support/v4/view/AsyncLayoutInflater$InflateThread;
  37. invoke-direct {v0}, Landroid/support/v4/view/AsyncLayoutInflater$InflateThread;-><init>()V
  38. sput-object v0, Landroid/support/v4/view/AsyncLayoutInflater$InflateThread;->sInstance:Landroid/support/v4/view/AsyncLayoutInflater$InflateThread;
  39. sget-object v0, Landroid/support/v4/view/AsyncLayoutInflater$InflateThread;->sInstance:Landroid/support/v4/view/AsyncLayoutInflater$InflateThread;
  40. invoke-virtual {v0}, Ljava/lang/Thread;->start()V
  41. return-void
  42. .end method
  43. .method private constructor <init>()V
  44. .locals 2
  45. invoke-direct {p0}, Ljava/lang/Thread;-><init>()V
  46. new-instance v0, Ljava/util/concurrent/ArrayBlockingQueue;
  47. const/16 v1, 0xa
  48. invoke-direct {v0, v1}, Ljava/util/concurrent/ArrayBlockingQueue;-><init>(I)V
  49. iput-object v0, p0, Landroid/support/v4/view/AsyncLayoutInflater$InflateThread;->mQueue:Ljava/util/concurrent/ArrayBlockingQueue;
  50. new-instance v0, Landroid/support/v4/util/Pools$SynchronizedPool;
  51. invoke-direct {v0, v1}, Landroid/support/v4/util/Pools$SynchronizedPool;-><init>(I)V
  52. iput-object v0, p0, Landroid/support/v4/view/AsyncLayoutInflater$InflateThread;->mRequestPool:Landroid/support/v4/util/Pools$SynchronizedPool;
  53. return-void
  54. .end method
  55. .method public static getInstance()Landroid/support/v4/view/AsyncLayoutInflater$InflateThread;
  56. .locals 1
  57. sget-object v0, Landroid/support/v4/view/AsyncLayoutInflater$InflateThread;->sInstance:Landroid/support/v4/view/AsyncLayoutInflater$InflateThread;
  58. return-object v0
  59. .end method
  60. # virtual methods
  61. .method public enqueue(Landroid/support/v4/view/AsyncLayoutInflater$InflateRequest;)V
  62. .locals 2
  63. :try_start_0
  64. iget-object v0, p0, Landroid/support/v4/view/AsyncLayoutInflater$InflateThread;->mQueue:Ljava/util/concurrent/ArrayBlockingQueue;
  65. invoke-virtual {v0, p1}, Ljava/util/concurrent/ArrayBlockingQueue;->put(Ljava/lang/Object;)V
  66. :try_end_0
  67. .catch Ljava/lang/InterruptedException; {:try_start_0 .. :try_end_0} :catch_0
  68. return-void
  69. :catch_0
  70. move-exception p1
  71. new-instance v0, Ljava/lang/RuntimeException;
  72. const-string v1, "Failed to enqueue async inflate request"
  73. invoke-direct {v0, v1, p1}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
  74. throw v0
  75. .end method
  76. .method public obtainRequest()Landroid/support/v4/view/AsyncLayoutInflater$InflateRequest;
  77. .locals 2
  78. iget-object v0, p0, Landroid/support/v4/view/AsyncLayoutInflater$InflateThread;->mRequestPool:Landroid/support/v4/util/Pools$SynchronizedPool;
  79. invoke-virtual {v0}, Landroid/support/v4/util/Pools$SynchronizedPool;->acquire()Ljava/lang/Object;
  80. move-result-object v0
  81. check-cast v0, Landroid/support/v4/view/AsyncLayoutInflater$InflateRequest;
  82. if-nez v0, :cond_0
  83. new-instance v0, Landroid/support/v4/view/AsyncLayoutInflater$InflateRequest;
  84. const/4 v1, 0x0
  85. invoke-direct {v0, v1}, Landroid/support/v4/view/AsyncLayoutInflater$InflateRequest;-><init>(Landroid/support/v4/view/AsyncLayoutInflater$1;)V
  86. :cond_0
  87. return-object v0
  88. .end method
  89. .method public releaseRequest(Landroid/support/v4/view/AsyncLayoutInflater$InflateRequest;)V
  90. .locals 2
  91. const/4 v0, 0x0
  92. iput-object v0, p1, Landroid/support/v4/view/AsyncLayoutInflater$InflateRequest;->callback:Landroid/support/v4/view/AsyncLayoutInflater$OnInflateFinishedListener;
  93. iput-object v0, p1, Landroid/support/v4/view/AsyncLayoutInflater$InflateRequest;->inflater:Landroid/support/v4/view/AsyncLayoutInflater;
  94. iput-object v0, p1, Landroid/support/v4/view/AsyncLayoutInflater$InflateRequest;->parent:Landroid/view/ViewGroup;
  95. const/4 v1, 0x0
  96. iput v1, p1, Landroid/support/v4/view/AsyncLayoutInflater$InflateRequest;->resid:I
  97. iput-object v0, p1, Landroid/support/v4/view/AsyncLayoutInflater$InflateRequest;->view:Landroid/view/View;
  98. iget-object v0, p0, Landroid/support/v4/view/AsyncLayoutInflater$InflateThread;->mRequestPool:Landroid/support/v4/util/Pools$SynchronizedPool;
  99. invoke-virtual {v0, p1}, Landroid/support/v4/util/Pools$SynchronizedPool;->release(Ljava/lang/Object;)Z
  100. return-void
  101. .end method
  102. .method public run()V
  103. .locals 6
  104. const-string v0, "AsyncLayoutInflater"
  105. :goto_0
  106. :try_start_0
  107. iget-object v1, p0, Landroid/support/v4/view/AsyncLayoutInflater$InflateThread;->mQueue:Ljava/util/concurrent/ArrayBlockingQueue;
  108. invoke-virtual {v1}, Ljava/util/concurrent/ArrayBlockingQueue;->take()Ljava/lang/Object;
  109. move-result-object v1
  110. check-cast v1, Landroid/support/v4/view/AsyncLayoutInflater$InflateRequest;
  111. :try_end_0
  112. .catch Ljava/lang/InterruptedException; {:try_start_0 .. :try_end_0} :catch_1
  113. const/4 v2, 0x0
  114. :try_start_1
  115. iget-object v3, v1, Landroid/support/v4/view/AsyncLayoutInflater$InflateRequest;->inflater:Landroid/support/v4/view/AsyncLayoutInflater;
  116. invoke-static {v3}, Landroid/support/v4/view/AsyncLayoutInflater;->access$000(Landroid/support/v4/view/AsyncLayoutInflater;)Landroid/view/LayoutInflater;
  117. move-result-object v3
  118. iget v4, v1, Landroid/support/v4/view/AsyncLayoutInflater$InflateRequest;->resid:I
  119. iget-object v5, v1, Landroid/support/v4/view/AsyncLayoutInflater$InflateRequest;->parent:Landroid/view/ViewGroup;
  120. invoke-virtual {v3, v4, v5, v2}, Landroid/view/LayoutInflater;->inflate(ILandroid/view/ViewGroup;Z)Landroid/view/View;
  121. move-result-object v3
  122. iput-object v3, v1, Landroid/support/v4/view/AsyncLayoutInflater$InflateRequest;->view:Landroid/view/View;
  123. :try_end_1
  124. .catch Ljava/lang/RuntimeException; {:try_start_1 .. :try_end_1} :catch_0
  125. goto :goto_1
  126. :catch_0
  127. move-exception v3
  128. const-string v4, "Failed to inflate resource in the background! Retrying on the UI thread"
  129. invoke-static {v0, v4, v3}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
  130. :goto_1
  131. iget-object v3, v1, Landroid/support/v4/view/AsyncLayoutInflater$InflateRequest;->inflater:Landroid/support/v4/view/AsyncLayoutInflater;
  132. invoke-static {v3}, Landroid/support/v4/view/AsyncLayoutInflater;->access$200(Landroid/support/v4/view/AsyncLayoutInflater;)Landroid/os/Handler;
  133. move-result-object v3
  134. invoke-static {v3, v2, v1}, Landroid/os/Message;->obtain(Landroid/os/Handler;ILjava/lang/Object;)Landroid/os/Message;
  135. move-result-object v1
  136. invoke-virtual {v1}, Landroid/os/Message;->sendToTarget()V
  137. goto :goto_0
  138. :catch_1
  139. move-exception v1
  140. invoke-static {v0, v1}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/Throwable;)I
  141. goto :goto_0
  142. .end method