PreLoader

luckybilly / PreLoaderJava第 24 期 · 2018-03-28
实时数据待拉取(运行 scripts/enrich.py 后填充)
暂无截图

项目简介

Android 页面在打开后需要在 UI 初始化完成后才能发起网络请求,以免网络请求返回后展示到 UI 时出现错误。但这种串行的做法导致页面的整个初始化时间变长。使用该工具可以在打开页面之前预加载数据,然后在页面 UI 初始化完成后提取预加载好的数据进行展示,从而缩短页面初始化时间,提升用户体验。示例代码如下:

java// 开启预加载任务int preLoaderId = PreLoader.preLoad(new Loader());Intent intent = new Intent(this, PreLoadBeforeLaunchActivity.class);intent.putExtra("preLoaderId", preLoaderId);startActivity(intent);// 预加载任务:模拟网络接口请求获取数据class Loader implements DataLoader {@Override public String loadData() {//此方法在线程池中运行,无需再开子线程去加载数据try {Thread.sleep(600);} catch (InterruptedException ignored) {}return "data from network server";}}// 在Activity(或Fragment)中UI初始化完成后开始监听预加载数据PreLoader.listenData(preLoaderId, new Listener());// 数据加载完成后,会调用DataListener.onDataArrived(...)来处理加载后的数据class Listener implements DataListener {@Override public void onDataArrived(String data) {//此方法在主线程中运行,无需使用Handler切换线程运行Toast.makeText(activity, data, Toast.LENGTH_SHORT).show();}}

本期其他项目

全部 →
暂无截图
Go第 24 期

lux

Go 编写的快速、简单、干净的视频下载程序。支持哔哩哔哩、YouTube 视频网站```$ annie -c cookies.txt https://www.bilibili.com/video/av20203945/Site: 哔哩哔哩 bilibili.com Title: 【2018拜年祭单品】相遇day by day Type: video Stream:[default] -------------------Quality: 高清 1080P60 Size: 220.65 MiB (231363071 Bytes)# download with: annie -f default "URL"16.03 MiB / 220.65 MiB [==>----------------------------] 7.26% 9.65 MiB/s 19s```

chrome-music-lab
JavaScript第 24 期

chrome-music-lab

Chrome 音乐实验室是一个网站,让学习音乐变得更加简单、好玩。完全基于Web端,国内可直接访问、老少皆宜、支持多种乐器,圆你一个音乐梦

暂无截图
JavaScript第 24 期

mpvue

小程序的前端框架。框架基于 Vue.js 核心,修改了 Vue.js 的 runtime 和 compiler 实现。使其可以运行在小程序环境中,为小程序开发引入了整套 Vue.js 开发体验。[5 分钟上手视频](http://mpvue.com/mpvue/quickstart/)- 彻底的组件化开发能力:提高代码复用性- 完整的 Vue.js 开发体验- 方便的 Vuex 数据管理方案:方便构建复杂应用- 快捷的 webpack 构建机制:自定义构建策略、开发阶段 hotReload- 支持使用 npm 外部依赖- 使用 Vue.js 命令行工具 vue-cli 快速初始化项目- H5 代码转换编译成小程序目标代码的能力

暂无截图
JavaScript第 24 期

node-in-debugging

《Node.js 调试指南》作者整理了使用 Node.js 开发这几年的调试经验和思路

同类项目

全部 →
jabref
Java第 124 期

jabref

写论文用的文献管理工具。这是一款免费开源、跨平台的文献与引用管理工具,原生支持 BibTeX/BibLaTeX。它可以从 Google 学术、arXiv 等平台检索论文,自动补全文献信息、提取 PDF 元数据、合并重复条目,并支持与 Word、LibreOffice 和多款 LaTeX 编辑器联动。

来自 @Xuefeng Xu 的分享
暂无截图
Java第 120 期

floci

开箱即用的 AWS 本地模拟器。这是一款免费、开源的 AWS 本地模拟器,帮助开发者在本地开发和测试 AWS 应用,它启动快、占用少、无需账号,仅需一条命令就能在本地启动 20 多种 AWS 服务的模拟环境。

openclaw-android
Java第 120 期

openclaw-android

在 Android 上运行 OpenClaw。该项目提供两种在 Android 手机上运行 OpenClaw 智能体平台(非客户端)的方式。可通过 Termux 安装 glibc 动态链接器直接部署 Linux 二进制文件,也可通过直接安装打包好的 Android 应用实现一键安装 OpenClaw,后者不需要安装 Termux。

openrocket
Java第 120 期

openrocket

开源的模型火箭模拟器。这是一款免费、开源的模型火箭(航模)仿真软件,支持模拟火箭的空气动力学性能和飞行轨迹,提供直观的火箭设计界面,可进行六自由度飞行模拟,在模拟过程中实时展示高度、速度、加速度等参数,适用于 Windows、Linux 和 macOS 平台。

暂无截图
Java第 119 期

jquick-curl

直接运行 curl 命令的 Java 库。这是一款轻量级 HTTP 客户端 Java 库,可直接将 curl 命令转换为 Java 中可执行的 HTTP 请求逻辑,无需手动改写代码。适用于从 Chrome 浏览器开发者工具、API 文档等复制 curl 命令后,快速集成到 Java 项目中。来自 [@paohaijiao](https://hellogithub.com/user/iIaNjn0mSdwx6gv) 的分享```java import java.util.List;// 示例UserService接口定义public interface UserService {/*** 获取所有用户* @param req 请求参数载体* @return 所有用户列表*/@JCurlCommand("curl -X GET --location 'http://localhost:8080/api/users/all'")List all(JQuickCurlReq req);/*** 根据ID获取单个用户* @param req 请求参数载体* @return 单个用户信息*/@JCurlCommand("curl -X GET http://localhost:8080/api/users/1")JUser getUserById(JQuickCurlReq req);/*** 创建新用户(POST请求)* @param req 请求参数载体* @return 创建后的用户信息*/@JCurlCommand("curl -X POST http://localhost:8080/api/users/createUser \\\n" +"-H \"Content-Type: application/json\" \\\n" +"-d '{\"name\":\"John Doe\",\"email\":\"john@example.com\"}'")JUser users(JQuickCurlReq req);}```

pokemon-tbje
Java第 119 期

pokemon-tbje

Java 写的文字版宠物小精灵游戏。这是一款基于 Java 游戏开发框架 LibGDX 构建的终端文字版宠物小精灵游戏,通过 Unicode 盲文字符作为像素点渲染画面,支持对战机制和完整的单人剧情。

暂无截图
Java第 118 期

dslabs

分布式系统课程配套实验框架。该项目是华盛顿大学专为分布式系统教学和学习而设计的 Java 框架,提供网络模拟、自动化测试和可视化调试等功能,帮助初学者从零实现一个具备容错、分片和事务性的 KV 存储系统,在实践中掌握分布式协议的实现原理。

geopulse
Java第 118 期

geopulse

自托管的个人足迹分析平台。这是一款采用 Java(Quarkus)和 PostGIS 构建的位置追踪和分析平台,可作为 Google Timeline 的开源替代品。它运行时占用内存低(40-100MB),提供自动行程检测、实时位置分享、多源数据导入、Immich 集成和 AI 问答助手等功能,支持 Docker 和 K8s 部署。