- 博客(469)
- 资源 (5)
- 收藏
- 关注
原创 Android MVVM-编程思想3(封装基类BaseMvvmActivity,BaseMvvmFragment)
上一小节讲解了DataBinding,ViewModel,LiveData 的入门使用,这一节把这些初始化,通用设置封装到基类中。分析UserActivity可以抽取的逻辑有哪些?Activity 需要持有ViewDataBinding,和ViewModel的引用,这两个声明和初始化过程可以抽取到基类。public class UserActivity extends AppCompatAc...
2019-12-23 15:59:21 5227 4
原创 RxJava编程思想3-(实现简易版Rxjava,如何实现线程切换)
如何做线程切换?如何实现?其实就是对被观察者的数据处理过程进行装饰,设计思想跟操作符一样,使用装饰者模式,对被被观察者的数据处理进行线程装饰。操作起来:先想一下,线程切换的几种场景:指定新线程,指定io线程,指定Android主线程等。定义:抽象,约定线程的公共行为public abstract class Scheduler { public abstract void sch...
2019-12-12 19:31:41 361
原创 Android MVP-编程思想6(依赖注入多个P层方式优化---注解,反射)
上一小节就是讲解多个P的处理思想。非常简单,使用容器存储就Ok了。这一小节,讲解使用如何使用注解和反射形式创建P的实例对象。目的有两个(1)是减少基类(父类)和子类的直接依赖。基类不需要通过createPresenter方式 注入P的引用,(2)减少代码,去掉繁琐的创建操作。每次都要实现createPresenter()方法,这种依赖注入的方式能否优化?解决思路一句话:注解扫描,反射创建实例化...
2019-12-12 13:17:20 592
原创 EventBus编程思想-实现简易版EventBus
这是编程思想系列的第二篇,这里挑选用的比较多的EventBus讲解一下,不纠结实现细节。先理解设计思想,这也是研究学习开源框架的第一步。一个开源框架的出现肯定是有原因的,便捷,性能基本离不开这两点。而EventBus设计的初衷应该是为了便捷。回想自己为什么要使用EventBus就明白了。简单提两句组件通信方式Intent:使用它实现组件跳转,并且能携带参数,但只能携带少量数据,同时在跨组件通...
2019-12-03 15:12:16 308
原创 Flutter Engine 编译
1、在实际开发中,一般不直接使用master的代码直接编译,都是需要获取指定版本的engine代码。使用 Xcode 打开 engine/src/out/android_debug_unopt_arm64/flutter_engine.xcodeproj 工程文件。cat dev/flutter/bin/internal/engine.version //获取当前版本commit id。然后,打开 代码文件 engine/src/flutter/shell/common/engine.cc 源代码文件。
2024-02-24 23:11:32 1247 1
原创 Android MVVM-编程思想2(入门实战MVVM,DataBinding,ViewModel,LiveData)
通过一个小的登录功能模块案例,帮助大家了解MVVM。最终实现一个MVVM通用框架。代码完成之后会放到github上。(如有错误之处,请在评论区指出,谢谢。如果感觉写的不错,请点赞,关注,谢谢。)上一个小节,只是理论介绍了MVVM,DataBinding,ViewModel,LiveData,这一小节,讲解一下他们的使用方式。如果已经对这些基础知识很了解,可以直接看下一节。目录:Android...
2019-12-20 19:04:40 894
原创 Android MVVM-编程思想1(入门介绍MVVM,DataBinding,ViewModel,LiveData)
前言通过一个小的登录功能模块案例,帮助大家了解MVP。最终实现一个结合Rxjava2,Retrofit 的MVP通用框架。代码放到github上。(如有错误之处,请在评论区指出,谢谢。如果感觉写的不错,请点赞,关注,谢谢。)目录:Android MVVM-编程思想1(MVVM优缺点,入门DataBinding)了解MVP编程思想的同学都知道MVP一个最大的缺点就是需要写大量接口。没接触过M...
2019-12-19 17:55:55 1118
原创 RxJava编程思想2-(实现简易版Rxjava,如何实现操作符?)
前言已经使用rxjava两个月了,觉得rxjava特别好用,爱不释手。本文目的是通过几百行的代码,帮助大家理解rxjava中的链式调用,操作符,线程切换是如何实现的。如果有写的不对的地方欢迎在评论区留言,如果觉得写的可以,请点赞,关注,谢谢。代码链接: github目录:RxJava编程思想1-(实现简易版Rxjava,基本的链式调用)操作符如何实现?我们先实现最简单的操作符— map操...
2019-12-12 19:29:20 267
原创 Android MVP-编程思想7(为什么使用代理类抽取通用方法而不是工具类?,基类BaseMvpFragment)
上一小节使用注解和反射优化了P层依赖注入的方式。这一节学习基类BaseMvpFragment,代理类抽取通用方法.BaseMvpFragment 和BaseMvpActivity 都属于V层的封装,有很多通用的代码,比如注入P层的代码。如何把这些代码抽离复用呢? 很多程序员首先想到的就是做成工具类。当然这种方式也可以,但是总是感觉不优雅。因为,当很多地方都需要使用的情况下我们才会做成工具类,而且...
2019-12-12 19:10:04 475
原创 Android MVP-编程思想5(如何处理多个P层的问题?)
实际开发中,当业务相对复杂的应用,我们的 Presenter 层并不是只一个,会存在View 与 Presener 层的一对多的关系。显示之前的代码设计不能满足这种需求。回顾一下之前的设计(一对一)之前是在BaseMvpActivity 中持有P层的引用(当时假设只有一个),BaseMvpActivity提供了createPresenter抽象方法,让子类实现. 通过这种方式注入P的实例对象。...
2019-12-12 11:17:20 1147
原创 Android MVP-编程思想4(AOP思想-动态代理运用,反射创建M层实例对象)
上一节讲解了如何处理内存泄露,如何做基类封装。这一节学习如何使用动态代理处理重复逻辑。在第二小节中我们已经提到了下面的问题:网络请求是耗时操作,我们 Presenter 层持有了 View 层的引用,也就是 Activity 的引用,在网络请求过程中,Activity被用户或者系统关闭,这时 View 相当于被摧毁了,如果不进行判断 View 引用是否为空,当数据返回时,就会造成空指针异常,所以...
2019-12-12 10:38:03 377
原创 Android MVP-编程思想3(MVP-内存泄露问题处理,基类封装,有没有必要再使用软引用?)
本篇是接着上一篇写的。但是并不需要按照顺序阅读,对MVP已经有一定理解和实践的可以直接阅读。如果没有接触过MVP请先阅读第一小节这一节主要实现两个小目标,1.内存泄露问题处理,2.基类抽取封装第一个问题,内存泄露,为什么会内存泄露?Activity又持有P层的引用,P持有V层(Activity)的强引用,循环引用了(所以即使在onDestory中设置mPresenter=null 也不会被回...
2019-12-11 17:47:38 512
原创 Android MVP-编程思想2(代码实现初级版)
MVP 实战那么我们下面就要将这个类中的代码改写为 MVP 的写法,回顾上面提及的 MVP 架构的思想,它是将 View 层与 Model 层彻底隔离,意味着 View 和 Model 都不再持对方的引用,它们通过一个第三者 Presenter 来代理事物的传递,所以 Presenter 层会持有 Model 与 View 层的引用,这是第一步。第二步,是将它们之间的联系抽象出来,以接口的方式...
2019-12-11 17:47:04 340
原创 Android MVP-编程思想1(什么是MVC-MVP-MVVM模式?)
MVC和MVP先讲一下mvcM-数据层:数据库,网络数据V-视图层:layout,自定义viewC-控制层: 一般是Acitivity而MVP则是对MVC的进一步改造,以Andorid为例,实际上在MVC中很难区分Activity到底应该处于V还是C的角色,因为activity即包含了界面也包含了一部分逻辑处理。遇到逻辑复杂的应用,一个activity可能写到3,5千行。维护起来特别困...
2019-12-11 17:46:25 368
原创 热修复方案-设计思想
什么是热修复?存在的意义?简单来讲,热修复就是为了修复线上问题而提出的修补方案,程序修补过程无需重新发版,软件发布之后,总会出现一些Bug,这个时候就需要去解决bug然后测试,并打渠道包在各大应用市场上发布,这样就会耗费大量的人力物力。几种热修复方案1、底层替换方案底层替换方案限制颇多,但时效性最好,加载轻快,立即见效。代表:支付宝的Andfix2、类加载方案类加载方案时效性差,需要...
2019-12-04 17:39:30 447
原创 RxJava编程思想1-(实现简易版Rxjava,如何基本功能和链式调用?)
前言已经使用rxjava两个月了,觉得rxjava特别好用,爱不释手。本文目的是通过几百行的代码,帮助大家理解rxjava中的链式调用,操作符,线程切换是如何实现的。记得代码自己敲一遍才能理解的更深刻。Rxjava涉及的几个概念Observable :被观察者,用来生产发送事件;Observer:观察者,接收被观察者传来的事件;Data:数据,被观察者发出数据并传递给观察者;(数据传递过...
2019-11-28 19:04:45 412
原创 GroupClass-Describing experiences
CorrectionsYou said: Recently I want to lose weight.Rather say: I recently started going to the gym, because I want to lose weight.You said: In start November this year…Rather say: In the beginni...
2019-11-26 22:24:33 246
原创 GroupClass-Child Dreams
I dreamed of having a flower shop when I grew up.I dreamed of living near to the sea.I dreamed of traveling the world and living in a quiet city.Vocabularyadventuroushectic(too busy)peacefulbo...
2019-11-19 21:39:56 241
原创 GroupClass-Eating out
Vacabularysmell, taste, feel, look/see, drinkdelicious/yummy, horrible, strange/weird, oily, spicy, sweet, salty, bitter, rich, bland, stale, overcookedbiang biang mian noodles
2019-11-17 21:50:00 233
原创 GroupClass-Talking about travel experience
vocabularyvisited means-had gone to spend time with someone or someplaceI’ve seen the Mona Lisa when I visited the Louvre in Parisseen means-had spent time looking at or watching something.enco...
2019-11-15 22:54:38 315
原创 android studio升级到3.5.1,老项目androidannotations 框架编译不通过
androidStudio 升级老项目编译不通过是很常见的事情。处理步骤根据编译报错日志:利用修改相关Glade文件(利用好搜索引擎)这里只记录特殊处理的问题(网上资料较少的问题,常规问题就不重复其他文章了)如果老项目中使用了androidannotations 框架,升级之后需要做相关配置老项目的配置使用apt的地方全部去掉, apply plugin: ‘android-apt’同...
2019-11-14 16:21:40 472
原创 GroupClass--Working together
Vocabularypresent/presentationgreet/greetingnegotiate/negotiationinterrupt/interruptioninvite/invitationRelated VocabularycontractjeansCorrection Areasforeign (pronunciation)colleague (pr...
2019-11-13 22:10:36 164
原创 GroupClass-Past and present
wrong:I learning English in…correct:I am learning English in…Other county’s people…Foreign people…Our lifes are very difficult than before.Our lives are more difficult than before.Let’s talk abo...
2019-11-12 22:14:46 157
原创 IOS静态库制作和使用 Xcode11
1.什么是库?库是程序代码的集合,是共享程序代码的一种方式2.库的类型?根据源代码的公开情况,库可以分为2种类型开源库 公开源代码,能看到具体实现 如SDWebImage, AFNetworking闭源库 不公开源代码,是经过编译后的二进制文件,看不到具体实现 主要分为: 静态库,动态库3.静态库和动态库的存在形式上的区别静态库 .a ...
2019-10-25 16:41:41 1338
原创 重拾算法系列之排序算法2(堆排序,归并排序,快速排序)
1.堆排序堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法。它的特点是:在排序的过程中,将array[0,…,n-1]看成是一颗完全二叉树的顺序存储结构,利用完全二叉树中双亲节点和孩子节点之间的内在关系,在当前无序区中选择关键字最大(最小)的元素。堆堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等...
2019-10-11 11:22:02 298
原创 重拾算法系列之排序算法1(冒泡排序,选择排序,插入排序)
前言什么是算法?算法在程序开发中是非常重要的内容,比如在后端开发过程对数据处理排序中,在前端开发过程中,做一些动画特效,绘制复杂的自定义视图的,高级动画等都需要用到特定的算法。为什么说是特定算法呢? 因为算法是可以分类的,常见的有排序算法,加密算法,聚类算法。那么什么是算法呢?我不想拿书上的标准或权威的释义复制到这里,我只想讲我自己的理解(也是我看了一些书之后)。**算法:解决某些问题的方法,...
2019-10-02 22:04:45 182
转载 删除android系统软件时报read-only file system
adb 命令删除系统预装软件:/system/app下的apk网上搜索解决方案如下:/system是只读的,你需要用mount -o remount,rw rootfs /system/ 把/system目录改成可读写。开始->运行->cmd->adb shell,然后输入该命令解决。rm 6xddh.apk...
2019-05-27 18:03:37 2225
原创 android实现session登录同步
最近在做一个项目,是html和android的混合开发项目。在android端写了一个本地的登录功能,登录成功之后,打开嵌套的html界面,还提示登录(网页登录)。这显然是不友好的。如何把本地登录的数据和打开的网页同步呢?这个问题也是“折磨”了我好长时间。因为html界面是别人写的,后台用的是c#,学java的我很头痛啊。后来在网上查找了很多资料。这里你需要补习一下cookie...
2018-07-23 16:04:43 5122
原创 Fragment嵌套FragmentViewPager 正常使用姿势
getFragmentManager到的是activity对所包含fragment的Manager,而如果是fragment嵌套fragment,那么就需要利用getChildFragmentManager()了。即:需要管理相互独立的并且隶属于Activity的Fragment使用getFragmentManager(),而在Fragment中动态的添加Fragment要使用getChildFr
2018-01-23 11:35:04 916
转载 mac 下android studio 获取开发版和发布版的sha1
调试版:1.直接在Android Studio中打开Terminal:2.输入keytool -list -v -keystore ~/.android/debug.keystore 回车3.输入密码,(可直接回车)默认密码为android发布版:先打包获取签名文件1
2017-11-15 15:49:39 550
原创 推荐的几个比较好的网站和博客
Web前端http://www.cnblogs.com/yexiaochai/p/4876099.htmlhttp://www.cnblogs.com/aaronjs/http://www.cnblogs.com/jikey/p/3613082.html阮一峰http://www.ruanyifeng.com/blog/archives.html
2017-10-10 12:10:43 9762 1
原创 Vue.js 环境搭建
Mac系统1.安装Homebrew2.安装node.jsbrew install node 新版本已经集成npm 了不需要单独安装,可以使用npm -v看看3.安装淘宝镜像在国内直接使用npm的官方镜像是比较慢的,这里我们采用的是淘宝镜像npm install -g cnpm --registry=https://registry.npm
2017-08-24 22:31:03 524
转载 JS分享功能
js实现页面分享代码share,不需要第三方接口在开发一个页面的时候常常会有这么一个小功能,就是分享该页面中的信息。常见的分享代码有百度分享, JiaThis分享插件,bshare分享插件等,我主要分享一下自定义分享代码,如下:function dofristshare(type) { var title = encodeURIComponent("新年
2017-08-15 18:02:22 1142
原创 Mac mysql 5.7.18 中文乱码问题
Mac OSX EI 10.11.6 mysql 5.7.18 最新版这个问题困扰了我好几天,这里记录一下情况是这样的,从数据库读出的中文数据是乱码的mysql> select * from table_ip;+----+-----------+------+---------------+---------------+----------------+-----------
2017-06-01 22:23:04 1206
原创 mysql 常用命令,基本知识
Mac系统 命令行 (windows 应该一样或类似,没试过)首先启动mysql 然后登录mysql :mysql -u root -p show tables from weicc;//显示数据库weicc的所有表从某个数据库的某张表查询数据:例如从数据库weicc中查询table_ip这张表的所有数据use weicc;
2017-05-13 09:39:16 660
原创 eclipse 创建maven web项目
前提:jdk,tomcate,eclipse ,maven环境都配置好了。eclipse创建maven web 项目有三种方式。第一种,最常用的方式:使用new->maven->maven project
2017-05-07 19:01:00 664
转载 eclipse nodejs项目搭建
转载:http://blog.csdn.net/ygh_0912/article/details/9108541说明:本人OS为64位windows7 Eclipse开发环境搭建前提条件:1)Node.js已安装ok,环境变量已配置,可以使用node -v来校验是否安装和配置成功(打开cmd命令窗口,输入node -v,如果正确安装正确,则会输出安装的Node.js版本号);成功了
2017-04-12 11:14:55 10256
原创 node npm bower 环境搭建windows
1.官网下载node 对应版本我的是64位的一步步next,安装目录可以自定义:我的在这里C:\weisoftware\node2.npm 全局环境变量配置在安装目录下node下新建文件夹:node_global 和 node_cache然后执行:npm config set prefix "C:\weisoftware\node\node_global"npm
2017-04-11 13:47:34 742
原创 mybatis入门问题汇总
1.问题一:使用mybatis,Bean类不能缺少默认构造函数否则会出现No constructor found 错误。如下Exception in thread "main" org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: org.apache.
2017-03-30 17:37:21 583
原创 android问题汇总2017
问题一:神坑之LinearLayout描述:A(activity)布局界面根节点使用LinearLayout布局,A(activity)点击布局上的按钮进入B(activity),然后关闭B回退到A界面,这时A界面底部出现一块黑色。但是当我把A布局文件的根节点改为相对布局问题就解决了。暂时不知道什么问题。问题二:Android6.0 不支持httpclient如果想继续
2017-03-13 11:12:33 499
sqljdbc4.jar jdbc连接Sql Server2012 所需的jar包
2016-08-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人