android
skka
此人很勤快,什么都没有写
展开
-
Android简单日志封装,类名+方法名为Tag
前言Android的日志类使用方式一般为Log.e(TAG,msg)Tag值的命名一般都让人头疼,常见的做法是将Tag设为类名,但每次要打log都得给类设置一个TAG变量,写着很烦人。此篇的目的便是解决此问题,将TAG的命名抽取出来,我们只需要关心Log的msg即可。直接上代码/** * @desc: 通用的日志类,包装了Tag 格式:[类名].[方法名]:[代码行] */object LogUtil { private const val BASE_CLASS.原创 2020-11-17 14:02:46 · 843 阅读 · 0 评论 -
Lifecycle + LiveData + ViewModel源码解析
一 简介Lifecycle 是 Jetpack 整个家族体系内最为基础的内容之一,为上层的LiveData、ViewModel等等更上层的组件提供监听 Activity、Fragment、Service、甚至 Process 的生命周期变化的统一方式。LiveData 是 Jetpack 家族的一种响应式开发框架,类似框架有还RxJava等。以数据驱动的方式更新UI,并且由于其基于Livecycle,能够感知组件生命周期变化,只会更新活跃的组件的状态,并在组件销毁时能自动解除对该组件的监听。ViewM原创 2020-10-18 12:35:16 · 389 阅读 · 0 评论 -
Handler -- 为什么Looper的loop()不会导致主线程卡死
结论初始化后,所有主线程做的事情都是在looper.loop()中完成的,因为主线程不做其他事,所以不会卡死基于linux的epoll模型,当主线程没有message消费时,会进入睡眠状态(简单理解),等到有新的可消费的Message时,再转为活跃状态处理Message(类似一个事件回调)。主线程在睡眠状态会让出CPU,并不是一直不停在执行循环。要了解下epoll机制可以看看这篇文章:NIO相关基础篇产生此疑问的前提怎么执行到looper.loop()首先得分析下ActivityThread原创 2020-10-16 13:51:51 · 1123 阅读 · 0 评论 -
android网络连接,以及接收服务器传来的json数据
最近和同学做一个app涉及到联网获取服务器信息,做法是服务器访问数据库操作,获取到数据库中信息,封装成json格式数据,服务器端用的json-lib,json封装起来很方便 JSONArray jsonArray = JSONArray.fromObject(anList); response.getWriter().write(jsonArray.toString());两句话...原创 2018-10-07 21:16:17 · 1986 阅读 · 2 评论 -
android文件上传
最近写的app项目涉及到用户更换头像,就涉及到文件上传,在网上找了很多教程,最后选了一个看起来比较接地气的,伪造post文件上传原博客地址:https://blog.csdn.net/anan890624/article/details/52510299博客好像并没有给出服务器端的代码吗,因为是post提交文件上传,正好和我之前做的基于表单的文件上传吻合,服务器端参考的是http://ww...原创 2018-10-07 21:51:02 · 3567 阅读 · 0 评论 -
android聊天室实现
最近项目里需要聊天室的功能,以前一直不敢做聊天,觉得要涉及多线程,socket之类的知识。自己做是不可能的,只能靠网上抄抄别人代码的过日子,酱紫。也算是幸运,一上午我就找到了一个很好的demo,作者直接提供了github项目源码,直接就可以用代码写得很规范,用起来很爽,可扩展性很好,改起来也很容易,唯一困惑的是不清楚他为什么要用android端来做服务器,我自己把他放到java服务器里也同样可以用...原创 2018-10-07 22:26:09 · 4842 阅读 · 0 评论 -
android 高德定位sdk使用
最近写项目有使用到高德地图sdk来获取定位服务,记录实现一下过程。首先在高德开放平台注册一个账号,申请一个key,申请key时麻烦点的操作在于获取sha1,官网提供了相应方法获取sha1,我首先通过命令行来获取的确获得到了一个sha1,最后测试才发现这个sha1并不对,不对的原因也没找到,最后还是通过代码获取的方式才找到正确的sha1,推荐使用代码获取sha1,方便又省事。代码获取sha1...原创 2019-07-27 09:40:52 · 525 阅读 · 0 评论