- 博客(32)
- 收藏
- 关注
原创 VR开发基础(三)unity XR最简开发环境搭建-整合Interaction toolkit、openXR plugin、PICO与OCULUS
unity的openXR插件开发支持进展不同,当前从验证效果来看:Oculus quest2已基本适配对接OpenXR plugin编译,而PICO则未支持,从官方roadmap和论坛答复看需要2020年8月份后,但与官方plugin直接对接似乎要延迟(即使应用开发中没有直接使用私有接口,但基于厂商SDK编译出的apk也并未完全兼容,底层不同的XR loader、运行时带来的典型的问题包括:VRorigin绑定错乱、追踪失效、运行崩溃等;用于创建 VR 和 AR 体验的、基于组件的交互系统。
2022-10-15 16:38:17 4730 1
原创 VR开发基础(二)一文详解Oculus环境helloxr的openxr核心接口流程
Oculus使用的是开源的hello_xr示例,但要使用自家的loader;在hello_xr上篇侧重分析了入口和图形的基本流程,此篇将侧重分析XR相关的流程
2022-10-11 12:40:16 3417
原创 VR开发基础(一)一文理清unity xr plugin架构与openxr标准
unity的XR架构通过接入各家plugin实现XR具体模块和特性,特别的包括openxr plugin,openxr的特别之处在于:标准由khronos维护但自身并非直接的实现厂商,并且自身也是一个抽象架构,在标准接口之下又需要具体厂商的实现。unity为支持openxr开发了openxr plugin,作为XR架构的一个插件,可以理解为unity为khronos家实现的,只不过openxr本身又需要更下一层的设备运行时实现。
2022-10-11 11:27:16 2409
原创 AndroidUtil - 极简内存泄漏监控 - 结合弱引用和组件生命周期
import android.app.Activity;import android.app.Application;import android.app.Application.ActivityLifecycleCallbacks;import android.content.Context;import android.os.Bundle;import android.os.Han...
2018-09-08 16:13:13 277
原创 AndroidUtil - 极简EventBus - 结合map,handler和线程池
import android.os.Bundle;import android.os.Handler;import android.os.Looper;import java.util.ArrayList;import java.util.HashMap;import java.util.concurrent.ExecutorService;import java.util.conc...
2018-09-08 16:12:36 330
原创 Android性能调试方法工具集合 - 持续更新
第一篇_布局优化一,影响面布局的设计和编码影响是多方面的,包括界面启动,交互相应,内存,GC二,思路和要求整体布局思路:要求layout呈现扁平化,宽而浅的效果。基本要求:1. 界面layout框架绘制控制在1次以下2. 大容器ViewGroup控制在3次绘制3. View控制4x次的绘制4. 一般主页等重度页4x绘制控制在整个layout的...
2018-05-14 11:50:19 6388
原创 Top10 移动端安全问题
Top 10 Mobile Risks from 【Hacking Android】The following diagram shows the OWASP Top 10 Mobile Risks, which is a listof top 10 mobile app vulnerabilities.The following are the top 10 vulnerabilities an...
2018-05-06 21:25:58 1696
原创 Android高性能编码 - 第八篇 移动端安全规范
第八篇安全Android内建的安全机制可以显著地减少了应用程序的安全问题。通过在默认的系统设置和文件权限设置的环境下建立应用,可避免为一系列的安全问题寻找解决方案。一些帮助建立应用的核心安全的特性如下:l Android应用程序沙盒,将应用数据和代码的执行与其他程序隔离。l 具有鲁棒性的常见安全功能的应用框架,例如加密,权限控制,安全IPCl 使用改进的虚拟机等技术,减少了常见内存管理错误。...
2018-05-06 21:06:11 1425
原创 Android高性能编码 - 第七篇 Efficient Java与Android Lint
7.1 Efficient Java中的性能要点Effective Java是一本被广泛认可的著作,它指明了在写Java代码时兼顾可维护性与效率的方式。Android也是使用Java来开发的,书中的部分建议可能不适用,因为并非所有Java特性都有针对Android优化(比如说枚举,序列化等等),或者是因为移动设备的局限(例如Dalvik/ART)。不管怎样,书中的大部分规范是稍微修改下甚至不修改就...
2018-05-06 20:32:33 240
原创 Android高性能编码 - 第六篇 异步任务与多线程
第六篇异步任务与多线程6.1 ANR与异步任务ANR是Android系统对程序无响应的异常响应,从Android系统的角度来看,发生ANR的原因主要有三个方面:1. Activity/Fragment在5秒内没有响应输入的事件(例如,按键按下,屏幕触摸);2. BroadcastReceiver在10秒内没有执行完毕;3. Service的生命周期方法中有...
2018-04-19 22:02:58 993
原创 Android高性能编码 - 第五篇 网络请求和数据解析
尽管现在项目中已经普遍采用okhttp等框架进行网络请求,但出于开发的高性能要求,我们仍有必要对一些网络请求的性能要点进行讨论,以便对网络请求中的整体编码和第三方框架的配置使用有更深入的认识。5.1 网络请求编码的基本要素当我们开始讨论网络请求时,从客户端的角度来说,主要涉及三个方面:客户端、请求、响应。从开发编码的角度来说,我们主要会关注请求和响应的几个具体要素,如下图所示。为了处理这些请求和响...
2018-04-13 22:09:57 856
原创 Android高性能编码 - 第四篇 layout加载UI优化
本篇对Android应用的UI渲染加载性能相关项进行阐述,这里的layout既包括使用xml文件定义的layout资源,也包括java代码动态创建的UI资源以及自定义组合资源,其中图片相关的部分已在第三篇进行集中阐述,这里不再细表,而是从一般意义上的UI界面加载层面进行探讨。4.1 Activity基类布局和子类布局的协调根据编码实践,我们通常会为Activity抽取基类,同时在基类中抽取父布局,...
2018-04-12 22:13:12 606
原创 Android高性能编码 - 第三篇 优化图片加载
图片加载是每个应用的基本功能,而图片对App整体性能的影响是不言而喻的,尤其是在程序加载大量图片和高分辨率图片时,最容易产生OOM异常,因此图片相关的编码都需要从性能的角度仔细考量。3.1 自定义图片加载的性能要点尽管我们普遍在应用中引入了第三方的图片加载库,但很多时候还会手动对局部的图片任务进行处理,包括临时加载避开第三方库的默认缓存、所选的第三方库不便于加载本地图片等,在此需要注意以下几个要点...
2018-03-31 19:05:05 327
原创 Android高性能编码 - 第二篇 数据库操作
第二篇数据库操作Android默认使用了SQLite数据库,在应用程序开发中,我们使用最多的无外乎增删改查。纵使操作简单,也有可能出现查找数据缓慢,插入数据耗时等情况。本篇内容将介绍一些提高的数据库性能的规范实践,帮助大家更高效地使用数据库。2.1 避免频繁的开关DB我们一般会在每次增删改查中开关数据库,对于可能频繁使用DB对象的情况,为了提高性能,在保证DB对象单例的情况下,可以对DB的开关进行...
2018-03-26 00:27:06 414
原创 自动化测试 - Appium + Python史上最全最简环境搭建步骤
一,为什么是Appium借一张图:1.1 Appium优点l 开源l 跨架构:NativeApp、Hybird App、Web Appl 跨设备:Android、iOS、Firefox OSl 不依赖源码l 使用任何WebDriver 兼容的语言来编写测试用例。比如 Java, Objective-C, JavaScript with Node.js, PHP, Python, Ruby...
2018-03-16 21:22:40 139237 20
原创 AndroidWiki - App启动流程和性能优化精要
一、主页数据业务流程重构图一:通行的缓存+刷新数据业务示例1.1 调整线程机制这个修改点需要排查和解决包含但不是限于以下五个问题:1,各线程业务由于历史原因,在单独子模块执行,没有做统一的通知/回调机制,获取执行结果采用土笨的全局标志和轮询的方式,极不合理。此处为紧密流程,应该采用接口回调。2,全局标志位的作用域太大,不安全。在多人开发和维护的项目中,隐患非常大。3,不同线程对同一标志位的操作没有...
2018-03-15 21:03:17 323
原创 AndroidUtil - 基于Android网络连接状态全面深度检查
一个通用的完整网络连接状态检查工具netState,ping dns,http异步执行使用低级api,保持独立通用public class NetworkChecker { private static final String TAG = "NetWorkChecker"; private static final String DNS_GOOGLE = "8.8.8.8";...
2018-03-12 22:23:16 325 2
原创 Android业务层代码结构扩展 - from MVP to MVPplus
一,背景Android工程编码,直接沿用了MVC的编码结构,但是由于Activity等组件对View和Mode的高耦合,在编码过程中,经常破坏MVC的风格,使得代码结构和业务模块日益混杂,维护和复用成本越来越高。二,解决思路为什么MVP成为主流业界提出了MVP,MVVM等,结合项目实践,如果项目已经开发成熟,不再适合导入MVVM,且风格变化稍大,对项目重构风险较高;而MVP与MVC较为接近,学习成...
2018-03-10 22:06:43 911
原创 Android高性能编码 - 第一篇 内存与对象(二)内存高效利用
1.2 面向对象与内存的高性能编码每当我们在代码中创建一个新对象的时候,系统就会尝试分配一个空间将它保存到内存中,但每个应用可以分配的内存空间是有限的。上一节我们已经阐述了如何避免内存泄露,本节我们主要阐述如何在编码中控制内存的占用,提升效率并减少垃圾回收。1.2.1 Data types数据类型1.2.1.1 Autoboxing自动装箱特性,使得基本数据类型自动转为对应的包装类型。比如Inte...
2018-03-10 21:15:27 273
原创 JavaWiki - 可重入读写锁:高性能读写并发实例
Java高性能读写并发实例1 技术与应用背景1.1 Java并发技术多线程读取并修改一个资源时,我们过去通常使用synchronized同步锁,这个是有性能损失的,很多情况下,资源对象总是被大量并发读取,偶尔有一个线程进行修改,也就是说:以读为主,修改不是很频繁。在JDK5.0版本以后,增加了Lock家族用于增强和扩展锁的机制,ReEntranceLock基本上可以替代原有的synchronize...
2018-03-07 20:50:44 959
原创 AndroidWiki - 异步加载原生方案和轻量化封装
一,背景正确的掌握Android异步编码能有效提高APP的性能和体验,但同时也带来了更多的编码工作,而如果编码不当,不仅使得代码难于维护,还可能引入内存开销等问题。 二,为什么需要异步机制1, 基于Android系统机制要求l 不要阻塞UI线程(即主线程),因此非UI任务尽可能的走子线程;l 不要在UI线程之外访问UI组件,因此子线程的执行结果需要抛转到UI线程。 2, 基于性能响应和用户体验...
2018-03-07 20:44:35 257
原创 Android高性能编码 - 第一篇 内存与对象(一)防止内存泄露
第一篇内存与对象内存表现是Android性能的重要指标,影响着应用整体的运行性能,需要我们高度关注。对于开发者来说,我们一方面要防止内存泄露的发生,另一方面则需要不断的优化编码,减少内存占用,提升内存对象的使用效率。1.1 防止内存泄露尽管Java运行环境自带了GC回收机制,但实际编码中由于默认的强引用关系,以及Android组件频繁的生命周期转换,资源无法及时释放以致内存泄露的情况屡见不鲜。本篇...
2018-03-07 20:27:03 335
原创 Android高性能编码 - 前言
前言本文主要阐述的内容本系列规范针对Android应用程序开发中,跟性能相关的编码问题和良好规范,基于编码实践场景,分为若干个主题篇进行阐述,并在未来随着Android平台发展和实践反馈中不断更新和扩展。在各个篇章中,你将看到笔者收集整理的细分专题,它们基于具体工程实践,提供一些示例或者建议,属于一种最佳实践(Best Practice)的呈现,并不代表唯一性和绝对性。具体的应用或者扩展,需要开发...
2018-03-07 20:15:58 186
原创 AndroidWiki - APP作恶之开机广播监听
1 开机广播事件和静态广播机制1.1 开机广播事件通过BroadcastReceiver获取SDcard,Usb连接和开机事件 链接:http://blog.chinaunix.net/uid-20771867-id-300200.htmlusb和电量链接:http://blog.csdn.net/wds1181977/article/details/503815091.2 静态广播与同步反馈以及...
2018-03-05 17:59:31 534
原创 AndroidWiki - APP作恶之悬浮窗和监控
一 后台弹窗 1 权限问题链接:http://www.xuebuyuan.com/1576755.html并不是所有后台弹窗都需要权限String permission = null;switch (type) { case TYPE_TOAST: // XXX right now the app process has complete control over // th...
2018-03-05 17:51:46 467
原创 AndroidUtil - 异步回调中的泛型传递 - 通过父类type方式,规避泛型擦除
import android.util.Log;import java.lang.reflect.ParameterizedType;import java.lang.reflect.Type;/**// 如需强制调用者实现数据回调的方法,可做成abstract public class ModuleApiCallback<T> implements ApiCallbac...
2018-03-05 17:27:42 563
原创 AndroidUtil - APP崩溃回调处理CrashHandler
import android.content.Context;import android.os.Environment;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.P...
2018-03-05 17:16:30 809
原创 AndroidUtil - 极简日志工具类 - 异步缓存
import android.os.Environment;import android.os.Handler;import android.os.HandlerThread;import android.os.Looper;import android.os.Message;import android.util.Log;import java.io.File;import ja...
2018-03-05 17:01:31 244
转载 java wiki - apache httpserver and httpclient
Server casepublic class ElementalHttpServer { public static void main(String[] args) throws Exception { if (args.length < 1) { System.err.println("Please specify do...
2018-03-05 16:51:08 217
原创 AndroidWiki - ViewGroup等比例缩放子view
大小屏监听,及等比例缩放子view private void getScreenSize() { int[] screenSize = Tools.getScreenSize(mContext); if (screenSize.length >= 2) { SCREEN_WIDTH = screenSize[0]; ...
2018-03-05 16:16:18 3015 2
原创 AndroidWiki - 无限图文轮播
无限轮播位import android.animation.Animator;import android.animation.AnimatorInflater;import android.content.Context;import android.os.Handler;import android.os.Looper;import android.support.v4.view.P...
2018-03-05 16:03:28 260
原创 AndroidWiki - 90/270翻转动画
90/270翻转动画import android.graphics.Camera;import android.graphics.Matrix;import android.view.animation.Animation;import android.view.animation.Transformation;public class RotateAnimation extends A...
2018-03-05 15:49:21 316
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人