Advertisement
Guest User

Untitled

a guest
Jun 22nd, 2017
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.70 KB | None | 0 0
  1. import android.app.Activity;
  2. import android.app.Application;
  3. import android.os.Bundle;
  4. import android.support.annotation.AnyThread;
  5. import android.support.annotation.CallSuper;
  6. import android.support.annotation.NonNull;
  7. import android.support.annotation.Nullable;
  8. import android.support.annotation.UiThread;
  9.  
  10. import java.util.ArrayList;
  11. import java.util.HashSet;
  12. import java.util.List;
  13. import java.util.Set;
  14.  
  15. public final class TempApplication extends Application {
  16. @CallSuper
  17. @UiThread
  18. @Override
  19. public final void onCreate() {
  20. super.onCreate();
  21.  
  22. mActivities.add(new HashSet<Activity>());
  23. mActivities.add(new HashSet<Activity>());
  24. mActivities.add(new HashSet<Activity>());
  25.  
  26. registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
  27. @UiThread
  28. @Override
  29. public final void onActivityCreated(@NonNull final Activity activity, @Nullable final Bundle savedInstanceState) {
  30. synchronized (mActivities) {
  31. mActivities.get(0).add(activity);
  32. }
  33. }
  34.  
  35. @UiThread
  36. @Override
  37. public final void onActivityStarted(@NonNull final Activity activity) {
  38. synchronized (mActivities) {
  39. mActivities.get(1).add(activity);
  40. }
  41. }
  42.  
  43. @UiThread
  44. @Override
  45. public final void onActivityResumed(@NonNull final Activity activity) {
  46. synchronized (mActivities) {
  47. mActivities.get(2).add(activity);
  48. }
  49. }
  50.  
  51. @UiThread
  52. @Override
  53. public final void onActivityPaused(@NonNull final Activity activity) {
  54. synchronized (mActivities) {
  55. mActivities.get(2).remove(activity);
  56. }
  57. }
  58.  
  59. @UiThread
  60. @Override
  61. public final void onActivityStopped(@NonNull final Activity activity) {
  62. synchronized (mActivities) {
  63. mActivities.get(1).remove(activity);
  64. }
  65. }
  66.  
  67. @UiThread
  68. @Override
  69. public final void onActivitySaveInstanceState(@NonNull final Activity activity, @Nullable final Bundle outState) {
  70. // No-op
  71. }
  72.  
  73. @UiThread
  74. @Override
  75. public final void onActivityDestroyed(@NonNull final Activity activity) {
  76. synchronized (mActivities) {
  77. mActivities.get(0).remove(activity);
  78. }
  79. }
  80. });
  81. }
  82.  
  83. @NonNull private final List<Set<Activity>> mActivities = new ArrayList<>(3);
  84.  
  85. @AnyThread
  86. @Override
  87. public final void registerActivityLifecycleCallbacks(@NonNull final ActivityLifecycleCallbacks callback) {
  88. super.registerActivityLifecycleCallbacks(callback);
  89.  
  90. String temp;
  91. for (final StackTraceElement stackTraceElement : Thread.currentThread().getStackTrace()) {
  92. temp = stackTraceElement.getClassName();
  93. if (temp != null && temp.startsWith("com.google.android.gms.cast.framework")) {
  94. synchronized (mActivities) {
  95. for (final Activity activity : mActivities.get(0)) {
  96. callback.onActivityCreated(activity, null);
  97. }
  98.  
  99. for (final Activity activity : mActivities.get(1)) {
  100. callback.onActivityStarted(activity);
  101. }
  102.  
  103. for (final Activity activity : mActivities.get(2)) {
  104. callback.onActivityResumed(activity);
  105. }
  106. }
  107. break;
  108. }
  109. }
  110. }
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement