
Android
文章平均质量分 86
经过近5年的移动开发,需要时间来沉淀,分析、终结、分享。
学术袁
水晶帘外娟娟月,梨花枝上层层雪。花月两模糊,隔窗看欲无。
月华今夜黑,全见梨花白。花也笑姮娥,让她春色多。
展开
-
安卓性能优化|离屏预加载
**问题:ActivityA跳转ActivityB,ActivityB页面布局较复杂,显示速度有待提升。**优化:ActivityA跳转到ActivityB之前,预加载ActivityB页面布局并缓存。等待到进入ActivityA时添加已缓存的布局并进行渲染显示。(且一些数据资源也可以在ActivityA预先获得并缓存后使用)原创 2023-03-20 14:57:29 · 1439 阅读 · 1 评论 -
多人协作|RecyclerView列表模块新架构设计
根据产品设计,将首页列表即将展示内容区域,以模块划分成多个。令团队开发成员分别承接不同模块进行开发,且互不影响任务开发,`模块数据结构亦可分别加载|提高渲染速度|降低渲染等待时间`。任务开发解耦,节省开发时间、开发效率翻倍。原创 2023-03-05 17:49:08 · 1315 阅读 · 1 评论 -
安卓|aar和jar打包引入流程演示
安卓平台,aar和jar打包引入全流程演示!通过对公共代码的沉淀、下沉,后打包成通用的sdk提供开发使用。原创 2023-02-15 12:32:49 · 2267 阅读 · 0 评论 -
混合开发框架|Flutter多引擎&dart多入口设计实现
仿照工行投资理财页面,使用Flutter实现。通过此讲述混合开发中,项目设计中,需求下如何创建多个Flutter引擎。Flutter引擎如何对应各自的dart入口,并实现每个Flutter引擎下路由切换页面。从而完成Flutter项目架构的设计搭建。原创 2022-10-06 19:58:19 · 2300 阅读 · 0 评论 -
混合开发架构|原生&Flutter通信
**声明双端通信协议,以MethodChannel为例。****`需求说明1`·** Native端发送信息到Flutter端,Flutter收到信息后回执。此时,Native端须再次处理Flutter端的回执信息。**`需求说明2`·** Flutter端发送信息到Native端,Native收到信息后处理。MethodChannel无回执。原创 2022-09-29 17:17:47 · 903 阅读 · 0 评论 -
混合开发架构|搭建Android集成Flutter3.0.1
报错:一、this version of the Android Support plugin for IntelliJ IDEA (or Android Studio) cannot open this project, please retry with version 4.1 or newer.二、Caused by: java.lang.NoSuchMethodError: No static method metafactory(Ljava/lang/invoke/MethodHandles$原创 2022-08-22 12:51:41 · 1741 阅读 · 0 评论 -
Java链表|头指针和虚拟头结点的区别
Java语言单向链表环境下,头指针和虚拟头结点在使用上有何区别?头指针指向空(即Node head = null),不存在的节点,此时链表为空;虚拟头节点是实际存在的,只不过它存放的元素是空,指向的下一个节点也是空。一旦设立了虚拟头节点,整个链表中所有的节点都会有1个前驱节点,这样一来,我们在任意位置执行增、删、改、查都将变得简单且操作统一。如果没有设置虚拟头结点而是使用头指针,则须要if-else逻辑判空的操作。.........原创 2022-07-07 20:08:44 · 1271 阅读 · 0 评论 -
架构演进|研究mvp到mvvm(传统架构mvvm和Jetpack下的区别)
探究MVP、MVVM架构实现方案,MVP如何向MVVM演进。以及在传统MVVM实现基础上如何实现的etpack组件下的MVVM架构。此架构相比传统架构又有何优缺点。Jetpack下的新架构,使用组件LiveData、ViewModel可关联宿主生命周期(有效避免空指针)。使用ViewModel组件,又能有效防止页面数据由于内存不足等非正常原因导致的数据丢失。若同时基于Databinding,此时Activity和Fragment只关注UI逻辑和用户的交互即可,数据绑定则交给Databinding!.....原创 2022-06-16 20:52:09 · 896 阅读 · 2 评论 -
字节码插桩(javassist)之插入代码块|IOC框架(Hilt)之对象注入~研究
字节码插桩(javassist)之插入代码块|IOC框架(Hilt)之对象注入新版本AS下报错:Error resolving plugin [id: 'com.android.application', version: '7.2.0', apply: false]> Plugin request for plugin already on the classpath must not include a version......原创 2022-05-21 18:10:07 · 814 阅读 · 0 评论 -
Retrofit执行原理详解
Retrofit执行原理就是,通过执行内部方法create作为接口请求的起始。进入通过执行动态代理生成接口对象,调用接口对象方法并回调动态代理的invoke方法。在回调invoke方法过程中,会解析接口对象方法的注解、方法参数注解、方法返回值类型并将解析内容封装成对象。待执行到ServiceMethod.invoke()时,Call对象执行同步/异步请求,使得OkHttp的拦截器通过chain.proceed()传入request对象(通过已解析的注解内容所生成),然后执行最终的接口数据请求,并返回响应报文原创 2022-04-17 16:10:22 · 1808 阅读 · 0 评论 -
文化袁探索专栏——线程池执行原理|线程复用|线程回收
线程池执行原理:ThreadPoolExecutor通过execute方法提交一个Runnable任务。若线程池在运行中RUNNING (反之,提交任务被拒绝,任务结束),则判断当前已创建线程数是否大于核心线程数?小于,则通过addWorker方法将Runable任务包装成Worker添加到任务队列HashSet并执行。大于,则判断阻塞队列是否已满?未满,则通过workQueue.offer将任务添加到阻塞队列,等待工作线程获得后执行。已满,会判断当前已创建线程数是否大于最大线程数?。。。.........原创 2022-04-12 12:40:32 · 2141 阅读 · 0 评论 -
EventBus执行原理详解
EventBus发送事件原理是,subscriptionsByEventType通过事件类型EventType.class获取到订阅方法包装类List集合。然后通过postToSubscription方法,在方法中匹配发送事件的线程模式threadMode,例如匹配到主线程时,会直接通过反射调用订阅方法subscription.subscriberMethod.method.invoke(subscription.subscriber, event)实现事件的发布-订阅执行。......原创 2022-03-30 16:47:06 · 8916 阅读 · 0 评论 -
详解ThreadLocal
Thread存储线程独有的变量(存储多个变量(值)时,可以创建多个ThreadLocal用来存储),以供在整个线程存活过程中取用。这种能力由ThreadLocal中的ThreadLocalMap实现。Thread在存储自己独有变量时,ThreadLocal实例在该Thread环境内使用set方法实现变量(值)存储。(继续探究原理)实际是静态内部类ThreadLocalMap将该变量(值)以key=ThreadLocal实例,value=变量(值)的键值对对象Entry形式存储到了ThreadLocalMap原创 2022-03-24 14:33:44 · 4269 阅读 · 0 评论 -
文化袁探索专栏——Activity|Application启动流程
分析Launcher进程启动流程+时序流程图,activity启动流程+时序流程图,并比较launcher进程、Application启动和activity启动流程的区别。原创 2022-03-18 11:37:02 · 3306 阅读 · 0 评论 -
文化袁探索专栏——事件分发机制
文化袁探索专栏——Activity、Window和View三者间关系文化袁探索专栏——View三大流程#Measure文化袁探索专栏——View三大流程#Layout文化袁探索专栏——消息分发机制文化袁探索专栏——事件分发机制文化袁探索专栏——Launcher进程启动流程’VS’APP进程启动流程文化袁探索专栏——Activity启动流程文化袁探索专栏——自定义View实现细节文化袁探索专栏——线程安全文化袁探索专栏——React Native启动流程用户点击屏幕,点击事件会在ViewR原创 2022-03-18 09:50:43 · 3028 阅读 · 0 评论 -
文化袁探索专栏——自定义View实现细节
文化袁探索专栏——Activity、Window和View三者间关系文化袁探索专栏——View三大流程#Measure文化袁探索专栏——View三大流程#Layout文化袁探索专栏——消息分发机制文化袁探索专栏——事件分发机制文化袁探索专栏——Launcher进程启动流程’VS’APP进程启动流程文化袁探索专栏——Activity启动流程文化袁探索专栏——自定义View实现细节文化袁探索专栏——线程安全文化袁探索专栏——React Native启动流程这里介绍以继承布局实现方式,来探索原创 2022-03-04 16:45:43 · 451 阅读 · 0 评论 -
文化袁探索专栏——React Native启动流程
ReactNative启动流程|Android如何向RN传递初始参数props?从原生Android转入ReactNative的第一个React.Component,在该Component中可以通过this.props获取到原生安卓传递的参数对象。该如何实现?通过startReactApplication重载方法中第三个参数Bundle来实现。在RN中可以获取到由原生传入的该Bundle对象。...原创 2022-03-03 12:45:43 · 2626 阅读 · 0 评论 -
文化袁探索专栏——消息分发机制
文化袁探索专栏——Activity、Window和View三者间关系文化袁探索专栏——View三大流程#Measure文化袁探索专栏——View三大流程#Layout文化袁探索专栏——消息分发机制文化袁探索专栏——事件分发机制文化袁探索专栏——Launcher进程启动流程’VS’APP进程启动流程文化袁探索专栏——Activity启动流程文化袁探索专栏——自定义View实现细节文化袁探索专栏——线程安全文化袁探索专栏——...原创 2022-03-02 12:44:32 · 2127 阅读 · 0 评论 -
文化袁探索专栏——Launcher进程启动流程
文化袁探索专栏——Activity、Window和View三者间关系文化袁探索专栏——View三大流程#Measure文化袁探索专栏——View三大流程#Layout文化袁探索专栏——Handler消息分发机制文化袁探索专栏——事件分发机制文化袁探索专栏——Launcher进程启动流程’VS’APP进程启动流程文化袁探索专栏——Activity启动流程文化袁探索专栏——自定义View实现细节文化袁探索专栏——线程安全文化袁探索专栏——关于Launcher进程启动流程在研究过程中想到了,原创 2022-03-01 19:31:30 · 1152 阅读 · 0 评论 -
文化袁探索专栏——Activity、Window和View三者间关系
文化袁探索专栏——Activity、Window和View三者间关系文化袁探索专栏——View三大流程#Measure文化袁探索专栏——View三大流程#Layout文化袁探索专栏——Handler消息分发机制文化袁探索专栏——事件分发机制文化袁探索专栏——Launcher进程启动流程文化袁探索专栏——Activity启动流程文化袁探索专栏——APP进程启动流程文化袁探索专栏——自定义View实现细节文化袁探索专栏——线程安全文化袁探索专栏——...............原创 2022-03-01 14:46:20 · 2041 阅读 · 0 评论 -
Dart语言同Java、Javascript语法糖区分比较
Google的Dart语言,学习起来还是比较亲和的。初学时为快速掌握其语言的里灵活使用,在此同Java、Javascript语法糖比较区分使用。原创 2021-01-18 11:43:46 · 969 阅读 · 2 评论 -
ImageView的属性、GridView属性设置
有些时候,ImageView直接是在xml中设置。这样很多属性都知道怎么做!但是换到使用代码去实现这些,那就有些不知所措了。所以这样才能更明白:public View getView(int position, View convertView, ViewGroup parent){ ImageView imageView = new ImageView(mContext);原创 2014-03-20 14:31:03 · 2180 阅读 · 0 评论 -
onItemSeleted 获得当前position对应的item内容
我们已经用习惯了onItemSeleted ,去对当前对应的position做各种处理。可是有一点估计很多人都忽略了。那就是在其对应的position上,获取对应的数据信息。请看一段代码片: @Override public void onItemSeleted(AdapterView parent, View view, int position,原创 2014-03-23 16:11:39 · 1625 阅读 · 0 评论 -
由启动页面向显示页面跳转异常
太奇葩了,大姑娘上花轿头一回啊!之前做了那么多都没有出现过这样的问题,这会竟然碰到了。那碰到了就要解决,真的很有趣。出现的问题异常:做了一个应用,应用效果是仿照一般的应用。举个例子,像腾讯微博。当你第一次安装的时候,会有引导页面,当引导页面划过之后才进入应用的主页面。这是应用效果的其一;其二,在平常的使用过程中。打开新浪微博,有时候会先看到一个写着新浪微博大字的页面,然后会有一个动画导出主原创 2014-03-24 14:40:16 · 1680 阅读 · 0 评论 -
使用AsyncTask弹出进度条ProgressDialog,利用网上的某音乐地址下载歌曲
有些时候,在你编写程序的时候某种控件不经常使用就会忘记怎么使用。就像AsyncTask、ProgressDialog、网络下载数据等。所以,我就有意的把这些东西记录下来,以免它们从我的生活中淡出!/** * 在使用抽象类"AsyncTask"时候,通过继承它来重写其中onPreExecute、doInBackground、 * onProgressUpdat原创 2014-03-25 16:18:36 · 1975 阅读 · 0 评论 -
图片异步加载框架 Android-Universal-Image-Loader
现在异步加载图片使用度最高的就数直接导入 Android-Universal-Image-Loader jar包的使用方式了;现在看一下它的特点:多线程图片加载尽可能多的配置选项(线程池,加载器,解析器,内存/磁盘缓存,显示参数等等)图片可以缓存在内存中,或者设备文件目录下,或者SD卡中可以监听加载进度可以自定义显示每一张图片时都带不同参数支持Widget点击免费下载jar原创 2014-03-26 19:41:07 · 1629 阅读 · 0 评论 -
怎么在eclipse虚拟机上安装apk
说来惭愧,这个操作我一直在身边的朋友那里学习。但是就是学不会!但是今天,交项目要用到这地方进行测试,所以我就要上网搜索自学了。呵呵,不巧我搜到了一篇文章是关于这方面的。然后看看结合之前的认知,最终学会了这门“高深”的技术!接下来,就让我们一起看看,它原来也是如此简单:在这里给大家分享一篇在Android 模拟器中安装apk文件的方法,本文以微信安装为例wechat.apk>1.下载原创 2014-03-27 14:05:05 · 6055 阅读 · 2 评论 -
双击BACK键退出程序
今天就要结项目了,所以就额外添加了一个功能——双击BACK键退出程序。我做的项目是基于TabHost的,通过页卡显示了四块内容。就跟新浪4.0版本微博客户端一样的效果。本来我也不会的,我只是知道要重写BACK键的功能。所以,就在网上搜索了好一会儿,并使用了好几种网上的版本。更可可恨的是,不能用。没别的办法,就得读一读代码,综合一下他们。最后,“黄天不负有心人”,OK了。所以我就要拿出来和大家分原创 2014-04-02 19:57:34 · 1877 阅读 · 1 评论 -
怎么调用系统通讯录并向被选中联系人发送短信
怎么调用系统通讯录并向被选中联系人发送已编辑短信。原创 2014-04-17 20:09:44 · 3609 阅读 · 1 评论 -
View背景颜色设置&Fragment&FragmentDialog
Android 开发中使用的颜色可以分为两种,自定义颜色和系统颜色:原创 2014-04-19 12:13:47 · 5157 阅读 · 0 评论 -
运行异常:android.view.WindowManager$BadTokenException:is not valid; is your activity running?
解决 运行异常:android.view.WindowManager$BadTokenException:is not valid; is your activity running?原创 2014-04-23 18:11:45 · 2873 阅读 · 0 评论 -
java 环境 eclipse 配置
电脑系统重复的安装,导致开发环境也要不断的进行配置。但是,配置它都是会忘记怎么弄的步骤。不说了,看完下面的配置方式你都会瞬间明白——原来这么简单!首先,安装步骤:jdk安装+环境配置——>eclipse安装+ADT配置+SDK配置 ==android开发步骤一:jdk安装+环境配置:安装jdk:配置环境:电脑图标/属性/高级系统变量/环境变量/系统变量/新建原创 2014-04-25 17:39:57 · 1417 阅读 · 0 评论 -
Android多线程断点续传下载
网络下多线程断点续传下载,是个非常完整的demo。我花费了好久整理的,希望能够帮到同学们。原创 2014-05-25 11:51:44 · 1647 阅读 · 0 评论 -
多线程中的"断点"续传《notify()和wait()》
一篇文章教会你怎么使用notify()和wait(),一篇文章教会你怎么使用notify()和wait()来实现文件下载的断点续传,请关注!原创 2014-06-01 21:27:49 · 2286 阅读 · 0 评论 -
9patch(.9)怎么去掉自己画上的黑点/黑线
帮你解决9patch的小问题原创 2014-07-21 11:25:13 · 4930 阅读 · 0 评论 -
Android横竖屏切换及其对应布局加载问题
Android横竖屏切换及其对应布局加载问题原创 2014-07-25 10:06:31 · 15000 阅读 · 1 评论 -
IllegalStateException: Can not perform this action after onSaveInstanceState
IllegalStateException: Can not perform this action after onSaveInstanceState 错误总结!原创 2014-07-28 18:05:02 · 1990 阅读 · 0 评论 -
ListView的不同item加载不同Layout
ListView的不同item加载不同Layout原创 2014-07-29 11:21:40 · 11153 阅读 · 2 评论 -
android.view.InflateException:Error inflating class fragment
错误分析:首先我的编码方式是在一个Activity中原创 2014-08-04 17:56:26 · 1808 阅读 · 0 评论 -
怎么找回Eclipse 项目(工程)中丢失的R包(文件)
怎么找回项目中丢失的R包原创 2014-08-05 16:23:24 · 4073 阅读 · 0 评论