Code Monkey home page Code Monkey logo

easyrouter's People

Contributors

luoxiaohui avatar qizewei avatar xiasm avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

easyrouter's Issues

getFileNameByPackageName里面异步加载目的是什么?

//使用同步计数器判断均处理完成 final CountDownLatch countDownLatch = new CountDownLatch(paths.size()); ThreadPoolExecutor threadPoolExecutor = DefaultPoolExecutor.newDefaultPoolExecutor(paths.size()); for (final String path : paths) { threadPoolExecutor.execute(new Runnable() { @Override public void run() { DexFile dexFile = null; try { //加载 apk中的dex 并遍历 获得所有包名为 {packageName} 的类 dexFile = new DexFile(path); Enumeration<String> dexEntries = dexFile.entries(); while (dexEntries.hasMoreElements()) { String className = dexEntries.nextElement(); if (!TextUtils.isEmpty(className) && className.startsWith(packageName)) { classNames.add(className); } } } catch (IOException e) { e.printStackTrace(); } finally { if (null != dexFile) { try { dexFile.close(); } catch (IOException e) { e.printStackTrace(); } } //释放一个 countDownLatch.countDown(); } } }); } //等待执行完成 countDownLatch.await();

这跟同步有什么区别?!

反射机制

想问一下作者,你的这个框架和阿里的ARouter都有用到反射机制吗?

关于intent.setFlags()的问题

image
大佬,我写了测试代码:
Intent intent = new Intent(mContext.getApplication().getApplicationContext(), TestActivity.class); ActivityCompat.startActivity(mContext.getApplication().getApplicationContext(), intent, null);
这样并不需要设置FLAG_ACTIVITY_NEW_TASK的启动模式,但也照样可以正常跳转。
图中箭头地方我比较困惑,为什么当currentContext为非Activity对象时,就需要设置Intent.FLAG_ACTIVITY_NEW_TASK?

DefaultPoolExecutor 的 newDefaultPoolExecutor 函数加一个判空操作

public static ThreadPoolExecutor newDefaultPoolExecutor(int corePoolSize) {
if (corePoolSize == 0) {
return null;
}
corePoolSize = Math.min(corePoolSize, MAX_CORE_POOL_SIZE);
//这里不应该判断下 executor 是否为 null 然后在执行 new ThreadPoolExecutor 的操作吗?
executor = new ThreadPoolExecutor(corePoolSize,
corePoolSize, SURPLUS_THREAD_LIFE, TimeUnit.SECONDS, new
ArrayBlockingQueue(64), sThreadFactory);
//核心线程也会被销毁
executor.allowCoreThreadTimeOut(true);
return executor;
}

对于框架设计有很多个疑问,可以解惑下么?

1.关于拦截器部分,拦截器采用递归调用,使用了CancelableCountDownLatch拦截,但是发现拦截器的调用,并不是并发处理的,也是必须一个个调用,那么这里CancelableCountDownLatch仅仅只是为了实现超时放行和中断取消么?那如果是这样,应该也有别的方式实现,为什么使用这个。
2.拦截器,注册那个部分,感觉可以简化一些,但是拦截器似乎是全局的,所有页面的调用都会经过拦截器,通过有没有提供回调来判定是否需要开启拦截器,那么如果某些页面,只希望执行一部分拦截器,似乎就比较麻烦了,需要在拦截器中在做判断了,而且,好像也没有办法吧拦截器归类到页面或安组来区分。

还有一些问题,这里先不问了,上面两个是我比较想知道设计上是出于什么目的这样设计的。

项目运行后无法跳转

断点提示:没有找到对应路由;
断点没有走到RouterProcessor里去,所以编译时没有生成routers。
暂时没找到原因,初次了解apt,可以给个提示吗,哪里出问题了,原项目没改动,手机是android 8.0系统

配合DataBinding使用会崩溃

我简单的把module1的Activity改成了DataBinding,直接crash。
Caused by: java.lang.ClassNotFoundException: Didn't find class "android.databinding.DataBinderMapperImpl" on path: DexPathList[[zip file "/data/app/com.xsm.easyrouter-P-3YCBtlxzJCEVXQJF52_w==/base.apk"],nativeLibraryDirectories=[/data/app/com.xsm.easyrouter-P-3YCBtlxzJCEVXQJF52_w==/lib/arm64, /system/lib64, /system/vendor/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:93)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at android.databinding.DataBindingUtil.(DataBindingUtil.java:32) 
at android.databinding.DataBindingUtil.setContentView(DataBindingUtil.java:284) 
at com.xsm.module1.Module1MainActivity.onCreate(Module1MainActivity.java:24) 
at android.app.Activity.performCreate(Activity.java:7050) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1214) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2809) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2931) 
at android.app.ActivityThread.-wrap11(Unknown Source:0) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1620) 
at android.os.Handler.dispatchMessage(Handler.java:105) 
at android.os.Looper.loop(Looper.java:176) 
at android.app.ActivityThread.main(ActivityThread.java:6701) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:246) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:783) 

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.