328 lines
11 KiB
Java
328 lines
11 KiB
Java
package com.tt.miniapp;
|
||
|
||
import com.tt.miniapphost.entity.AppInfoEntity;
|
||
import java.lang.annotation.ElementType;
|
||
import java.lang.annotation.Retention;
|
||
import java.lang.annotation.RetentionPolicy;
|
||
import java.lang.annotation.Target;
|
||
import java.lang.reflect.Method;
|
||
import java.util.ArrayList;
|
||
import java.util.Iterator;
|
||
import java.util.List;
|
||
|
||
public class LifeCycleManager extends AppbrandServiceManager.ServiceBase {
|
||
private List<Listener> mListeners = new ArrayList<Listener>();
|
||
|
||
LifeCycleManager(AppbrandApplicationImpl paramAppbrandApplicationImpl) {
|
||
super(paramAppbrandApplicationImpl);
|
||
}
|
||
|
||
private void notifyEventLocked(LifeCycleEvent paramLifeCycleEvent, Object paramObject) {
|
||
Iterator<Listener> iterator = this.mListeners.iterator();
|
||
while (true) {
|
||
if (iterator.hasNext()) {
|
||
Listener listener = iterator.next();
|
||
Method method = listener.mInterestMethods[paramLifeCycleEvent.ordinal()];
|
||
if (method != null) {
|
||
int i = (method.getParameterTypes()).length;
|
||
if (i == 0) {
|
||
try {
|
||
method.invoke(listener.mOwner, new Object[0]);
|
||
} catch (IllegalAccessException|java.lang.reflect.InvocationTargetException illegalAccessException) {}
|
||
continue;
|
||
}
|
||
if (i == 1) {
|
||
method.invoke(((Listener)illegalAccessException).mOwner, new Object[] { paramLifeCycleEvent });
|
||
continue;
|
||
}
|
||
method.invoke(((Listener)illegalAccessException).mOwner, new Object[] { paramLifeCycleEvent, paramObject });
|
||
}
|
||
continue;
|
||
}
|
||
return;
|
||
}
|
||
}
|
||
|
||
public void addLifeCycleListener(Object paramObject) {
|
||
// Byte code:
|
||
// 0: aload_0
|
||
// 1: monitorenter
|
||
// 2: new com/tt/miniapp/LifeCycleManager$Listener
|
||
// 5: dup
|
||
// 6: aload_0
|
||
// 7: aload_1
|
||
// 8: invokespecial <init> : (Lcom/tt/miniapp/LifeCycleManager;Ljava/lang/Object;)V
|
||
// 11: astore_1
|
||
// 12: aload_0
|
||
// 13: getfield mListeners : Ljava/util/List;
|
||
// 16: aload_1
|
||
// 17: invokeinterface add : (Ljava/lang/Object;)Z
|
||
// 22: pop
|
||
// 23: aload_0
|
||
// 24: monitorexit
|
||
// 25: return
|
||
// 26: astore_1
|
||
// 27: aload_0
|
||
// 28: monitorexit
|
||
// 29: aload_1
|
||
// 30: athrow
|
||
// Exception table:
|
||
// from to target type
|
||
// 2 23 26 finally
|
||
}
|
||
|
||
public void checkMethod(Method paramMethod) {
|
||
Class[] arrayOfClass = paramMethod.getParameterTypes();
|
||
int i = arrayOfClass.length;
|
||
if (i == 0)
|
||
return;
|
||
if (arrayOfClass[0].equals(LifeCycleEvent.class)) {
|
||
if (i <= 2)
|
||
return;
|
||
throw new UnsupportedOperationException("LifecycleInterest注解的方法最多只能有两个参数");
|
||
}
|
||
throw new IllegalArgumentException("LifecycleInterest注解的方法要么无参数,要么第一个参数必须为LifeCycleEvent类型");
|
||
}
|
||
|
||
public void notifyAppCreate() {
|
||
// Byte code:
|
||
// 0: aload_0
|
||
// 1: monitorenter
|
||
// 2: aload_0
|
||
// 3: getstatic com/tt/miniapp/LifeCycleManager$LifeCycleEvent.ON_APP_CREATE : Lcom/tt/miniapp/LifeCycleManager$LifeCycleEvent;
|
||
// 6: aconst_null
|
||
// 7: invokespecial notifyEventLocked : (Lcom/tt/miniapp/LifeCycleManager$LifeCycleEvent;Ljava/lang/Object;)V
|
||
// 10: aload_0
|
||
// 11: monitorexit
|
||
// 12: return
|
||
// 13: astore_1
|
||
// 14: aload_0
|
||
// 15: monitorexit
|
||
// 16: aload_1
|
||
// 17: athrow
|
||
// Exception table:
|
||
// from to target type
|
||
// 2 10 13 finally
|
||
}
|
||
|
||
public void notifyAppHide() {
|
||
// Byte code:
|
||
// 0: aload_0
|
||
// 1: monitorenter
|
||
// 2: aload_0
|
||
// 3: getstatic com/tt/miniapp/LifeCycleManager$LifeCycleEvent.ON_APP_HIDE : Lcom/tt/miniapp/LifeCycleManager$LifeCycleEvent;
|
||
// 6: aconst_null
|
||
// 7: invokespecial notifyEventLocked : (Lcom/tt/miniapp/LifeCycleManager$LifeCycleEvent;Ljava/lang/Object;)V
|
||
// 10: aload_0
|
||
// 11: monitorexit
|
||
// 12: return
|
||
// 13: astore_1
|
||
// 14: aload_0
|
||
// 15: monitorexit
|
||
// 16: aload_1
|
||
// 17: athrow
|
||
// Exception table:
|
||
// from to target type
|
||
// 2 10 13 finally
|
||
}
|
||
|
||
public void notifyAppInfoInited(AppInfoEntity paramAppInfoEntity) {
|
||
// Byte code:
|
||
// 0: aload_0
|
||
// 1: monitorenter
|
||
// 2: aload_0
|
||
// 3: getstatic com/tt/miniapp/LifeCycleManager$LifeCycleEvent.ON_APP_INFO_INITED : Lcom/tt/miniapp/LifeCycleManager$LifeCycleEvent;
|
||
// 6: aload_1
|
||
// 7: invokespecial notifyEventLocked : (Lcom/tt/miniapp/LifeCycleManager$LifeCycleEvent;Ljava/lang/Object;)V
|
||
// 10: aload_0
|
||
// 11: monitorexit
|
||
// 12: return
|
||
// 13: astore_1
|
||
// 14: aload_0
|
||
// 15: monitorexit
|
||
// 16: aload_1
|
||
// 17: athrow
|
||
// Exception table:
|
||
// from to target type
|
||
// 2 10 13 finally
|
||
}
|
||
|
||
public void notifyAppRoute() {
|
||
// Byte code:
|
||
// 0: aload_0
|
||
// 1: monitorenter
|
||
// 2: aload_0
|
||
// 3: getstatic com/tt/miniapp/LifeCycleManager$LifeCycleEvent.ON_APP_ROUTE : Lcom/tt/miniapp/LifeCycleManager$LifeCycleEvent;
|
||
// 6: aconst_null
|
||
// 7: invokespecial notifyEventLocked : (Lcom/tt/miniapp/LifeCycleManager$LifeCycleEvent;Ljava/lang/Object;)V
|
||
// 10: aload_0
|
||
// 11: monitorexit
|
||
// 12: return
|
||
// 13: astore_1
|
||
// 14: aload_0
|
||
// 15: monitorexit
|
||
// 16: aload_1
|
||
// 17: athrow
|
||
// Exception table:
|
||
// from to target type
|
||
// 2 10 13 finally
|
||
}
|
||
|
||
public void notifyAppShow() {
|
||
// Byte code:
|
||
// 0: aload_0
|
||
// 1: monitorenter
|
||
// 2: aload_0
|
||
// 3: getstatic com/tt/miniapp/LifeCycleManager$LifeCycleEvent.ON_APP_SHOW : Lcom/tt/miniapp/LifeCycleManager$LifeCycleEvent;
|
||
// 6: aconst_null
|
||
// 7: invokespecial notifyEventLocked : (Lcom/tt/miniapp/LifeCycleManager$LifeCycleEvent;Ljava/lang/Object;)V
|
||
// 10: aload_0
|
||
// 11: monitorexit
|
||
// 12: return
|
||
// 13: astore_1
|
||
// 14: aload_0
|
||
// 15: monitorexit
|
||
// 16: aload_1
|
||
// 17: athrow
|
||
// Exception table:
|
||
// from to target type
|
||
// 2 10 13 finally
|
||
}
|
||
|
||
public void notifyAppStartLaunching() {
|
||
// Byte code:
|
||
// 0: aload_0
|
||
// 1: monitorenter
|
||
// 2: aload_0
|
||
// 3: getstatic com/tt/miniapp/LifeCycleManager$LifeCycleEvent.ON_APP_START_LAUNCHING : Lcom/tt/miniapp/LifeCycleManager$LifeCycleEvent;
|
||
// 6: aconst_null
|
||
// 7: invokespecial notifyEventLocked : (Lcom/tt/miniapp/LifeCycleManager$LifeCycleEvent;Ljava/lang/Object;)V
|
||
// 10: aload_0
|
||
// 11: monitorexit
|
||
// 12: return
|
||
// 13: astore_1
|
||
// 14: aload_0
|
||
// 15: monitorexit
|
||
// 16: aload_1
|
||
// 17: athrow
|
||
// Exception table:
|
||
// from to target type
|
||
// 2 10 13 finally
|
||
}
|
||
|
||
public void notifyMiniAppInstallSuccess() {
|
||
// Byte code:
|
||
// 0: aload_0
|
||
// 1: monitorenter
|
||
// 2: aload_0
|
||
// 3: getstatic com/tt/miniapp/LifeCycleManager$LifeCycleEvent.ON_APP_INSTALL_SUCCESS : Lcom/tt/miniapp/LifeCycleManager$LifeCycleEvent;
|
||
// 6: aconst_null
|
||
// 7: invokespecial notifyEventLocked : (Lcom/tt/miniapp/LifeCycleManager$LifeCycleEvent;Ljava/lang/Object;)V
|
||
// 10: aload_0
|
||
// 11: monitorexit
|
||
// 12: return
|
||
// 13: astore_1
|
||
// 14: aload_0
|
||
// 15: monitorexit
|
||
// 16: aload_1
|
||
// 17: athrow
|
||
// Exception table:
|
||
// from to target type
|
||
// 2 10 13 finally
|
||
}
|
||
|
||
public void removeLifeCycleListener(AppbrandServiceManager.ServiceBase paramServiceBase) {
|
||
// Byte code:
|
||
// 0: aload_0
|
||
// 1: monitorenter
|
||
// 2: aload_0
|
||
// 3: getfield mListeners : Ljava/util/List;
|
||
// 6: invokeinterface iterator : ()Ljava/util/Iterator;
|
||
// 11: astore_2
|
||
// 12: aload_2
|
||
// 13: invokeinterface hasNext : ()Z
|
||
// 18: ifeq -> 43
|
||
// 21: aload_2
|
||
// 22: invokeinterface next : ()Ljava/lang/Object;
|
||
// 27: checkcast com/tt/miniapp/LifeCycleManager$Listener
|
||
// 30: getfield mOwner : Ljava/lang/Object;
|
||
// 33: aload_1
|
||
// 34: if_acmpne -> 12
|
||
// 37: aload_2
|
||
// 38: invokeinterface remove : ()V
|
||
// 43: aload_0
|
||
// 44: monitorexit
|
||
// 45: return
|
||
// 46: astore_1
|
||
// 47: aload_0
|
||
// 48: monitorexit
|
||
// 49: goto -> 54
|
||
// 52: aload_1
|
||
// 53: athrow
|
||
// 54: goto -> 52
|
||
// Exception table:
|
||
// from to target type
|
||
// 2 12 46 finally
|
||
// 12 43 46 finally
|
||
}
|
||
|
||
public enum LifeCycleEvent {
|
||
ON_APP_CREATE, ON_APP_HIDE, ON_APP_INFO_INITED, ON_APP_INSTALL_SUCCESS, ON_APP_ROUTE, ON_APP_SHOW, ON_APP_START_LAUNCHING;
|
||
|
||
static {
|
||
ON_APP_HIDE = new LifeCycleEvent("ON_APP_HIDE", 4);
|
||
ON_APP_INSTALL_SUCCESS = new LifeCycleEvent("ON_APP_INSTALL_SUCCESS", 5);
|
||
ON_APP_ROUTE = new LifeCycleEvent("ON_APP_ROUTE", 6);
|
||
$VALUES = new LifeCycleEvent[] { ON_APP_CREATE, ON_APP_START_LAUNCHING, ON_APP_INFO_INITED, ON_APP_SHOW, ON_APP_HIDE, ON_APP_INSTALL_SUCCESS, ON_APP_ROUTE };
|
||
}
|
||
}
|
||
|
||
@Retention(RetentionPolicy.RUNTIME)
|
||
@Target({ElementType.METHOD})
|
||
public static @interface LifecycleInterest {
|
||
LifeCycleManager.LifeCycleEvent[] value();
|
||
}
|
||
|
||
class Listener {
|
||
Method[] mInterestMethods;
|
||
|
||
Object mOwner;
|
||
|
||
Listener(Object param1Object) {
|
||
this.mOwner = param1Object;
|
||
this.mInterestMethods = new Method[(LifeCycleManager.LifeCycleEvent.values()).length];
|
||
for (Method method : this.mOwner.getClass().getMethods()) {
|
||
if (method.isAnnotationPresent((Class)LifeCycleManager.LifecycleInterest.class)) {
|
||
LifeCycleManager.LifeCycleEvent[] arrayOfLifeCycleEvent = ((LifeCycleManager.LifecycleInterest)method.<LifeCycleManager.LifecycleInterest>getAnnotation(LifeCycleManager.LifecycleInterest.class)).value();
|
||
int j = arrayOfLifeCycleEvent.length;
|
||
int i = 0;
|
||
while (i < j) {
|
||
LifeCycleManager.LifeCycleEvent lifeCycleEvent = arrayOfLifeCycleEvent[i];
|
||
if (this.mInterestMethods[lifeCycleEvent.ordinal()] == null) {
|
||
LifeCycleManager.this.checkMethod(method);
|
||
this.mInterestMethods[lifeCycleEvent.ordinal()] = method;
|
||
i++;
|
||
continue;
|
||
}
|
||
StringBuilder stringBuilder = new StringBuilder("超过一个方法注解了相同的事件, ");
|
||
stringBuilder.append(lifeCycleEvent.name());
|
||
stringBuilder.append("class: \"");
|
||
stringBuilder.append(param1Object.getClass().getSimpleName());
|
||
stringBuilder.append("\", method: \"");
|
||
stringBuilder.append(this.mInterestMethods[lifeCycleEvent.ordinal()]);
|
||
stringBuilder.append("\" 和 \"");
|
||
stringBuilder.append(method);
|
||
stringBuilder.append("\"");
|
||
throw new IllegalStateException(stringBuilder.toString());
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
/* Location: C:\Users\august\Desktop\tik\df_miniapp\classes.jar!\com\tt\miniapp\LifeCycleManager.class
|
||
* Java compiler version: 6 (50.0)
|
||
* JD-Core Version: 1.1.3
|
||
*/ |