-
small踩坑记录
前段时间,调研了插件化的一些相关方案。感觉small的文档比较清晰,而且做到极致裁剪。源码也能够直接看到,被称为是最精简的插件化方案。故决定将公司以前的一个组件化的应用进行插件化改造。虽然demo运行起来很简单,但是在实践的过程中,还是非常曲折。最后在不懈的努力下,终于完成了插件化的集成。下面把集成过程中遇到的一些坑记录下来,仅供大家参考。small踩坑记。。1、app插件模块的 package 必须和applicationId一致,否则会出错。 报r文件找不到。但是app模块可以单独运行...…
-
Android SDK目录及版本号区别
SDK目录add-ons这里面保存着附加库,第三方公司为android 平台开发的附加功能系统。比如GoogleMaps,当然你如果安装了OphoneSDK,这里也会有一些类库在里面。docs这里面是Android SDKAPI参考文档,所有的API都可以在这里查到。extras该文件夹下存放了==Android support v4,v7,v13,v17包==;还有google提供额USB驱动、Intel提供的硬件加速等附加工具包,和market_licensing作为AndroidMa...…
-
ShadowSocks全局上网
如果用过ShadowSocks的朋友,可能会慢慢意识到,ShadowSocks开启后,在浏览器上好使,但是我们在使用terminal终端的时候,发现一些wget、curl、git、brew等命令行工具都会变得很慢。。 这是为什么呢,可能大家像我一样困惑,那么下面我们来简单介绍下,出现这种问题的原因,以及该如何去做呢?首先我们先了解一些ShadowSocks的基本工作原理。用一张图简单来表示下。简单来说,ShadowSocks分为客户端和服务端,用户发出的请求基于Socks5协议与Shado...…
-
多图合并框架实现
现在多数app里面加入聊天已经是一个非常普遍的现象了,而微信和qq则是通讯领域的鼻祖了。如果产品经理在考虑做聊天设计的时候,多数会参考。常常你会听到,你看微信和qq都是这么做的,你就这么来吧,虽然心理有一万个不痛快,但谁叫我们是有一个有追求的程序员呢。所以产品的要求是实现类似微信的群头像。类似如下作为程序员,首先会评估下工作量吧。在产品眼里,就是把图片合成一起嘛,有啥难度吗?所以工作时间决定了你能做成什么样吧方案分析:方案1、直接写成布局,然后按照不同的布局加载不同张数的图片。而大家通用的...…
-
android线程消息机制之Handler详情
android线程消息机制主要由Handler,Looper,Message和MessageQuene四个部分组成。平常在开发中,我们常用来在子线程中通知主线程来更新,其实整个安卓生命周期的驱动都是通过Handler(ActivityThread.H)来实现的。首先我们先介绍这四个类的作用:Handler:消息的发送者。负责将Message消息发送到MessageQueue中。以及通过Runnable,Callback或者handleMessage()来实现消息的回调处理Looper:是消...…
-
AsyncTask源码解析
AsyncTask,是android提供的轻量级的异步类。本质上还是基于Thread和消息机制(handler)的封装。首先我们先看一下,通常AsyncTask的用法。首先,AsyncTask是一个抽象类,需要实现doInBackground方法。private class MyTask extends AsyncTask<String, Integer, String> { //onPreExecute方法用于在执行后台任务前做一些UI操作 @Override ...…
-
Thread、Handler和HandlerThread关系何在
HandlerThread看名字,确实比较奇怪。到底是handler还是thread.其实看过源码后,就会非常清楚。HandlerThread 继承自thread。所以本质上是一个线程,内部有Looper和Handler引用。它和AsyncTask非常像,都是google为了方便开发者,封装的工具类。HandlerThread可以让你不用维护Looper来实现线程的消息通知机制。这个类非常简单,我们用下源码并可以得知。public class HandlerThread extends T...…
-
handler引用的内存泄露
通常我们在合适handler进行线程通信的时候,会简单的如下调用 Handler handler1 = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); tv.setText("haha"); } };为什么这样调用会存在内存泄露呢?这是因为非静态的内部类(匿名...…
-
android 登录成功后再跳转到目标界面的思考
项目中经常有遇到一个典型的需求,就是在用户在需要进入A界面的时候,需要先判断用户是否登录,如果没有登录,则需要先进入登录界面,如果登录成功了,再直接跳转到A界面。需求定义所以这里有两个需求: 1、自动跳转到登录界面 2、登录成功后再自动跳转到目标A界面如果我们直接判断用户有没有登录,提醒用户登录。也没有让用户登录成功后再直接跳转到目标界面,这样的用户体验恐怕是不能满足一个高逼格程序员的要求。那么,我们来思考下,如何才能更加优雅的完成这个工作呢?当然,在开始之前,我们可以先了解下其他人都是怎...…
-
jekyll Github Pages 博客搭建 并实现评论 阅读量 以及分类功能
搭建一个属于自己的博客系统,不仅可以将平时记录的知识进行归档和存储,同时也可以进行分享,让自己积累的成果得到别人的认同。相比使用一些博客平台,没有规则的限制,烦恼于编辑器不够好用,以及担心哪天博客gg了,数据会丢失,自建的博客系统可以随心所欲地满足自己的需求,哪时不爽调整哪里,如果你是个文艺小青年,创建一个独一无二的博客系统,不是逼格满满的,想想都让人兴奋吧当然,你会说,自建一个博客平台,需要太多技术的支持,例如数据库,前端页面,后台逻辑等,买域名,建服务器,岂不是得不偿失。当博客技术发展...…