Coder Social home page Coder Social logo

luckybilly / preloader Goto Github PK

View Code? Open in Web Editor NEW
1.5K 1.5K 171.0 2.64 MB

Pre-load data for android Activity/Fragment/View (android页面启动速度优化利器:在页面打开之前就预加载数据)

Home Page: https://medium.com/@billy.qiyi/preloader-3e2ff0d9279e

License: Apache License 2.0

Java 100.00%

preloader's Introduction

GitHub stats

preloader's People

Contributors

luckybilly 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  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

preloader's Issues

请求数据如何返回

DataLoader接口 需要返回请求的数据。那么在子线程请求的数据只能通过接口或者handler获取到主线程,如何在DataLoader实现类中开一个子线程获取结果之后再返回给DataLoader的实现类呢?这是一个问题,不能像Demo那样简单的return一个模拟数据,子线程的数据是不能return给DataLoader实现类的!

关于preLoader的一点意见

这个策略想法挺不错的,之前在其它项目中也采取过类似的方案。
不过几个个问题我抛下:

(1)activity跟activity之间的切换,抛开自定义动画,在从点击到执行新页面的oncreate,时差在40ms(小米note2),这种场景下意义不是很大
(2)业务隔离问题,请求的触发跟业务页面直接是相互隔离的,就会存在接口维护的成本。

异步加载数据传值

loadData()方法需要返回一个String类型数据。而当在该方法中调用接口以异步方式获取数据时,如何保证返回的String类型数据就是调取接口获取的数据?有可能还没等获取到数据,就返回了一个String类型数据,而返回的该数据为null

请问该如何解决?

页面重新创建找不到preLoadId对应的Worker

Demo中PreLoader的destroy放到activity的onDestroy里,如果Activity重新创建怎么办?这个时候根据Intent拿到的preLoadId是找不到对应的worker的。开发者控制台打开不保留活动栈可以复现。

关于worker线程池的问题

private static ExecutorService defaultThreadPoolExecutor = new ThreadPoolExecutor(2, Integer.MAX_VALUE,60L, TimeUnit.SECONDS,new SynchronousQueue<Runnable>(), FACTORY);
问一个细节的问题 关于Worker的线程池设计 我觉得在并发量不大的情况下 改为
new ThreadPoolExecutor(0, Integer.MAX_VALUE,60L, TimeUnit.SECONDS,new SynchronousQueue<Runnable>(), FACTORY)更好
即使用newCachedThreadPool 不知道作者是如何考虑的

刷新API失效

场景:启动页实现主页数据预加载;
问题:偶现。用户打开APP进入主页,切换进后台一段时间,再切回来,首页数据白屏(未经过启动页,怀疑首页4个Fragment中当前这个被销毁)。下拉刷新,调用预加载刷新,数据监听回调无响应。

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.