彻底弄清楚android 面试经典题:Handler 机制

向来觉得电话面试就觉得肯定黄,总有一种局促和不安,今天接到阿里的电话面,当时在家里。问的问题还是那几个老生常谈的问题。 view 的绘制啊, handler 机制啊,hashmap实现原理啊。效率啊,优化啊啥的。

今天可谓是都碰上了(其实还差那个asyntask 啊 http协议啊 多线程同步啊,jvm 啊,启动流程啊巴拉巴拉),这一关不过,下一关就没门啊,其实这个和项目经验或者一个人能不能做成事情并没有太大关系,最高的智商是把事做成,最高的情商是靠谱。

以前工作没那么多闲情看这个,那今天就带着面试的目的来彻底研究一下 面试第一题 Handler机制。

从应用开发这个角度来看,大家可能都知道 不能在子线程中直接new 一个hander。否则会抛出常见的

java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()

然后大家也知道(上面明显提示),在子线程中假如要创建handler 可以先Looper.prepare()然后就可以创建了。

我们写一个常见的用handler 进行线程间通讯例子,子线程发送消息给主线程更新UI
Continue reading “彻底弄清楚android 面试经典题:Handler 机制”

最近两个星期宅家里

十一月悄然过完了,从十五号开始,宅在家里足足两个星期,几乎没有怎么出过门。

关于技术

阿里云域名备案下来了。

小黑助手第一个功能刚刚上线。就是这么一个日程提醒的功能,开发周期远远超过了我的预期。通过语音发送一个日程提醒,比如说 “今天下午五点开会“,公众号会创建一个提醒,到五点的时候会推送一个日程提醒。看似简单的功能,却到处都是坑。

首先 是域名备案,要想实现微信公众号访问h5 获取到用户信息的花,域名必须icp备案,这个过程提前有所准备,所以还算顺利,花了十来天吧。我只备案了一个域名,如果感觉还可以,以后会把手下的其他几个域名都备案一下。

其次 程序后台是基于flask的。实现异步任务调度,用的是apscheduler。这个还算简单,看看api,简单的推送还是没问题,但是推送需要用到一个access_token 这个是微信用来获取一些数据要用到的。包括推送事件以及主动给用户发送消息,这个值的有效时间是两个小时,因此需要一个中控服务刷新,我还是用的apscheduler 去定时刷新token,token保存到 redis 中,这样高频读取的话速度会高一些。

对于如何将语音指令转化为日程数据,我的初步想法是用一些api解析语音内容 转化成文字,然后用正则从文字中提取出关键信息。这样就能做到自动构建出事件啦。

最后还有就是日程数据的管理,需要删除浏览自己的日程提醒,所以需要一个界面,因此我在公众号下创建了一个菜单,用户点击菜单可以进入到日程列表,这里可以手动添加删除日程。界面是用的vue 发现jinja2和vue的工作有些重复了,而且变量识别符号有冲突,因此将jinja2模板的识别符 强制加空格。后期将功能全部转换为vue来实现。因为vue同时实现动画,以及页面,更加灵活,举个例子,如果用jinja2模板做一个列表,需要在每个列表下添加完整的资源删除链接,vue或者js 可以直接只需要id 自行拼接就好了。

我设想后期还需要加上生日提醒(支持农历),再进一步的功能再看吧。

有兴趣可以关注一下

关于工作

这是一个不得不面对的问题,快年底了,半年没有上班,回去没法交代。前一阵想去一些初创公司看看,做python,看了两家,感觉和自己想想的差距蛮大的,一个是待遇低,加班严重,而且不缴纳公积金。这样想想还不如回去做安卓。

 

基于Flask的微博系统开发

起因

个人认为学习一门技术最好是能够做一些项目,『这儿』是一个基于Flask搭建的轻博客,用户可以发帖关注等基本功能。从开发到基本上能用花了大概三个星期时间,我学习这个是跟随这《Flask Web开发》这本书开始做起来的。全书共205页,薄薄的一本,这本书是去年和公司同事凑单买下来的。一只放在书桌上没看,十一月份正好没有什么其他事情,就像做这个项目练练手。
网址:
http://zheer.me
github:
https://github.com/hsiunien/Phantom
主机:阿里云

Continue reading “基于Flask的微博系统开发”