笔记 | 初探Kotlin协程

如何理解协程

协程是一种不同于进程线程的存在,其本质是一种函数,同一线程中的多个协程是串行执行的,但为了理解仍然需要三者一起对比。

进程、线程、协程三者的上下文切换对比:

进程线程协程
切换者操作系统操作系统用户(编程者/应用程序)
切换时机根据操作系统自己的切换策略,用户不感知根据操作系统自己的切换策略,用户不感知用户自己(的程序)决定
切换内容页全局目录&内核栈&硬件上下文内核栈&硬件上下文硬件上下文
切换内容的保存保存于内核栈中保存于内核栈中保存于用户自己的变量(用户栈或者堆)
切换过程用户态 - 内核态 - 用户态用户态 - 内核态 - 用户态用户态(没有陷入内核态)
切换效率

安卓开发 | WearOS包com.ticwear:mobvoi-api无法拉取的一个解决方法

问题描述

WearOS软件开发时,需要使用出门问问提供的com.ticwear:mobvoi-api包,此包位于
maven { url 'https://dl.bintray.com/ticwear/maven'}

然而正常使用implementation "com.ticwear:mobvoi-api:1.1.1"来集成到项目时,发生403错误,无法下载该包。

解决方案

学习笔记 | Android开发常用的几种模式

在Android Studio中,xml写layout只能是算画个草图,对界面的监听改变等逻辑都要在activity/fragment里处理,大型项目中会使其显得非常臃肿,难以维护。故而需要使用适合的开发模式使得项目易于阅读和维护。


学习笔记 | Android Studio安卓开发入门经验总结 干货

前言

最近完成了移动编程课程的学习,加上其它安卓开发项目的经历,感觉收获颇为丰富。故在此总结整理安卓开发中比较常见的一些问题,技巧和指南。

0.目录


错误记录 | 一个导致ListView中item内容全部重复的可能原因

最近在写一个快递查询的WearOS App,突然有一次调试发现主界面的ListView里的item,显示的都是一模一样的内容,全是最新添加的一个快递的内容(这是一个伏笔哈哈哈)。
遂思前想后,开始以为是ListView的问题,但是没结果。接着以为是Adapter的问题,但很快又否决了这个想法,因为项目一开始也是用的SimpleAdapter,且当时ListView显示正常。无意中看到一篇Blog:

HashMap对象重复赋值在多线程中的教训
https://blog.csdn.net/goodguyzl/article/details/83847286

该文中写道:

“HashMap对象是在while循环外面声明的(第一行代码那里),但是在循环里面这个HashMap对象反复了put了key相同的两个键值对,问题可能就出在这里”“HashMap对象是在while循环外面声明的(第一行代码那里),但是在循环里面这个HashMap对象反复了put了key相同的两个键值对,问题可能就出在这里”

我猛然意识到我也犯了同样的错误!

info:HashMap对象的申明放到循环外的话,意味着循环内的每次put会覆盖掉原有的值,而且ListView每次add的都是同一个HashMap对象!
这就是为什么我的项目里ListView中显示的item全是最新添加的一个快递的信息。