当前位置: 首页>>代码示例>>Java>>正文


Java ProxyBuilder类代码示例

本文整理汇总了Java中com.android.dx.stock.ProxyBuilder的典型用法代码示例。如果您正苦于以下问题:Java ProxyBuilder类的具体用法?Java ProxyBuilder怎么用?Java ProxyBuilder使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


ProxyBuilder类属于com.android.dx.stock包,在下文中一共展示了ProxyBuilder类的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: create

import com.android.dx.stock.ProxyBuilder; //导入依赖的package包/类
/**
 * 生成代理
 *
 * @return
 */
public T create() {
    ProxyBuilder<T> proxy = ProxyBuilder.forClass(superClazz);
    if (constructorArgTypes != null && constructorArgValues != null && constructorArgValues.length == constructorArgTypes.length) {
        proxy.constructorArgTypes(constructorArgTypes).constructorArgValues(constructorArgValues);
    }
    proxy.handler(this);
    proxy.dexCache(mCacheDir);
    try {
        return proxy.build();
    } catch (IOException e) {
        Logger.i("app", "error" + e.getClass() + "");
        e.printStackTrace();
    }
    return null;
}
 
开发者ID:DIY-green,项目名称:AndroidStudyDemo,代码行数:21,代码来源:Enhancer.java

示例2: stub

import com.android.dx.stock.ProxyBuilder; //导入依赖的package包/类
private static Object stub(Class klass) {
  try {
    InvocationHandler handler =
        new InvocationHandler() {
          @Override
          public Object invoke(Object project, Method method, Object[] args) {
            return null;
          }
        };

    if (klass.isInterface()) {
      return Proxy.newProxyInstance(klass.getClassLoader(), new Class[] {klass}, handler);
    } else {
      return ProxyBuilder.forClass(klass).handler(handler).build();
    }
  } catch (IOException e) {
    throw new RuntimeException(e);
  }
}
 
开发者ID:facebook,项目名称:screenshot-tests-for-android,代码行数:20,代码来源:WindowAttachment.java

示例3: invoke

import com.android.dx.stock.ProxyBuilder; //导入依赖的package包/类
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
    try {
        // 忽略方法,则直接调用原来的方法
        for (Method m : ignoreMethods) {
            if (m.equals(method)) {
                return ProxyBuilder.callSuper(proxy, method, args);
            }
        }

        if (proxy instanceof BasePresenter) {
            final IView v = ((BasePresenter) proxy).mView;
            if (v == null) {
                Log.w(TAG, "view didn't attach or has detached");
                return null;
            }
        }

        return ProxyBuilder.callSuper(proxy, method, args);
    } catch (NullPointerException e) {
        // 忽略因为耗时操作之后对已回收 view 进行调用而产生的空指针异常
        if (proxy instanceof BasePresenter) {
            if (((BasePresenter) proxy).mView == null) {
                Log.w(TAG, "please stop background task when view has detached. ignore this exception");
                return null;
            }
        }

        // 其他原因的空指针异常,正常抛出
        throw e;
    }
}
 
开发者ID:JeremyHe-cn,项目名称:Mvp,代码行数:33,代码来源:PresenterFactory.java

示例4: invoke

import com.android.dx.stock.ProxyBuilder; //导入依赖的package包/类
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
    if (filter == null) {
        return null;
    }
    int accept = filter.accept(method);
    if (accept >= callBacks.length) {
        return null;
    }
    if (method.getName().equals("hashCode") || method.getName().equals("toString")) {
        return ProxyBuilder.callSuper(proxy, method, args);
    }
    return callBacks[accept].intercept(proxy, method, args);
}
 
开发者ID:DIY-green,项目名称:AndroidStudyDemo,代码行数:15,代码来源:Enhancer.java

示例5: callRealMethod

import com.android.dx.stock.ProxyBuilder; //导入依赖的package包/类
@Override
public Object callRealMethod() throws Throwable {
    if (Modifier.isAbstract(method.getModifiers())) {
        throw cannotCallAbstractRealMethod();
    }
    return ProxyBuilder.callSuper(proxy, method, rawArgs);
}
 
开发者ID:linkedin,项目名称:dexmaker,代码行数:8,代码来源:InvocationHandlerAdapter.java

示例6: intercept

import com.android.dx.stock.ProxyBuilder; //导入依赖的package包/类
@Override
public Object intercept(final Object proxy, final Method method, final Object[] args) throws Throwable {
    final AsyncMethod asyncMethod = method.getAnnotation(AsyncMethod.class);

    if (asyncMethod != null) {
        switch (asyncMethod.methodType()) {
            case atom:
                if (methodHashSet.contains(method.getName())) {
                    return null;
                } else {
                    methodHashSet.add(method.getName());
                }
            default:
                break;
        }

        if (asyncMethod.withDialog()) {
            mMethodCallBack.showDialog();
        }
        if (asyncMethod.withCancelableDialog()) {
            mMethodCallBack.showCancelableDialog();
        }

        pool.execute(new Runnable() {
            @Override
            public void run() {
                Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);
                try {
                    dealWithResult(getResult());
                } catch (Throwable e) {
                    e.printStackTrace();
                }
            }

            private Object getResult() throws Throwable {
                Object obj = null;
                switch (asyncMethod.methodType()) {
                    case normal:
                        obj = ProxyBuilder.callSuper(proxy, method, args);
                        break;
                    case atom:
                        obj = ProxyBuilder.callSuper(proxy, method, args);
                        methodHashSet.remove(method.getName());
                        break;
                    default:
                        break;
                }
                return obj;
            }

            private void dealWithResult(Object result) {
                if (asyncMethod.withDialog() || asyncMethod.withCancelableDialog()) {
                    mMethodCallBack.hideDialog();
                }

                if (result != null && result.getClass() == Message.class) {
                    Message msg = (Message) result;
                    switch (msg.arg1) {
                        case MessageArg.ARG1.TOAST_MESSAGE:
                            break;
                        case MessageArg.ARG1.CALL_BACK_METHOD:
                            if (msg.obj == null || !(msg.obj instanceof String) || "".equals(msg.obj.toString().trim())) {
                                msg.obj = method.getName() + "CallBack";
                            }
                        default:
                            break;
                    }
                    mMethodCallBack.sendMessage(msg);
                }
            }

        });
        return null;
    } else {
        return ProxyBuilder.callSuper(proxy, method, args);
    }
}
 
开发者ID:DIY-green,项目名称:AndroidStudyDemo,代码行数:78,代码来源:AsyncMethodAtomInterceptor.java


注:本文中的com.android.dx.stock.ProxyBuilder类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。