Android开发学习
2019独角兽企业重金招聘Python工程师标准>>>
首先,今天一打开adb,发现一直报这个错误:
ADB server didn't ACK
* failed to start daemon *
会发现,就算到platform-tools下面输入 adb -kill server ,再输入adb -start server都没用。
因为,这个问题是因为adb的端口被占用了,到底是哪个2货占用的。可以直接查看端口好,adb的默认端口号是5037,
cmd -> netstat -ano | findstr "5037" ,然后找到是哪个进程占用。然后打开任务管理器,查看是哪个进程。我发现网上有些网友贴出来是tadb.exe占用了这个端口,我的不是这个,发现是金山手机助手占用了这个端口,果断kill,然后好了。
其次,讲讲自己遇到的一个还没有解决的问题:
直接贴出来吧。
我的应用每次上拉刷新都会启动一个异步线程类取服务器的数据,因为考虑到客户体验,就没有在AsyncTask的onPreExecute方法里面设置一个转圈的等待时间。所以刷新的时候,切换到其他fregment再刷新,或者在这个listview里面不断上拉启动asynctask异步刷新。更重要的是,每次进来这个fregment的时候,就已经启动了一次刷新的线程去取最新的数据,腾讯新闻也是这样搞的。
所以,本来担心的问题出现了,就是多线程的操作,你想想,线程A对listview的操作的时候,这个时候线程B又来了,要对listview的数据更新,这个时候,如果线程A通知更新listview里面的数据,就会报上面的错误。顺便说一下,通知更新用adapter.notifyDataSetChanged()方法。
1. 有网友说,在数据更新之后,要立马通知UI线程对adapter进行notifyDataSetChanged,以免数据不一致。于是在adapter数据有更改的地方,都给它通知更新一下,结果发现了一个奇怪的问题,每个fregment里面的listview数据第一条不见了,找不到原因,折回来,看看其他办法。
2 . 或者是把数据的更新放到UI线程中,这个方法倒是提醒了我,是不是可以把adatper里面的数据的放入一个缓冲,每次刷新就把数据放缓从里面,再从缓冲里面取出来更新。这样是不是避免了多线程操作数据,不管多少次线程操作数据,我都采取缓冲把数据等到一定程度再通知UI更新。这样会不会用户体验差了点呢?因为线程取数据的时间过程是不可控的,什么时候才把缓冲的数据取呢?怎么保证取的时候线程已经停止写入了呢?又得折回来。
3. 靠谱一点的方法,是不是得对线程进行管理。如果第一个线程还在运行的话,不让它给我启动第二个线程。java的thread是有isAlive()这个一个方法判断的,但是可惜我在Asynctask里没有找到。
转载于:https://my.oschina.net/szuwupeng/blog/213594
Android开发学习相关推荐
- android培训内容明细,记录Android开发学习
记录Android开发学习 Menu菜单学习 1.掌握Android中菜单的创建. 2.掌握Intent信使组件. 创建菜单Menu 我们模仿微信菜单栏学习,创建一个于微信菜单栏相似的菜单 那么我们应 ...
- android开发学习之路——连连看之游戏逻辑(五)
GameService组件则是整个游戏逻辑实现的核心,而且GameService是一个可以复用的业务逻辑类. (一)定义GameService组件接口 根据前面程序对GameService组件的依赖, ...
- Android开发学习---使用Intelij idea 13.1 进行android 开发
Android开发学习---使用Intelij idea 13.1 进行android 开发 原文:Android开发学习---使用Intelij idea 13.1 进行android 开发 1.为 ...
- 《Java和Android开发学习指南(第2版)》—— 1.5 本章小结
本节书摘来异步社区<Java和Android开发学习指南(第2版)>一书中的第1章,第1.5节,作者:[加]Budi Kurniawan,更多章节内容可以访问云栖社区"异步社区& ...
- 《Java和Android开发学习指南(第2版)》——第2章,第2.10节本章小结
本节书摘来自异步社区<Java和Android开发学习指南(第2版)>一书中的第2章,第2.10节本章小结,作者 [加]Budi Kurniawan,更多章节内容可以访问云栖社区" ...
- Android开发学习之基于ViewPager实现Gallery画廊效果
通过我们前面的学习,我们知道ViewPager是可以做出近乎完美的滑动体验,回顾整个Android,我们发现Gallery具备同样的特点,于是我们大胆地猜想,Gallery是否和ViewPager之间 ...
- Android开发学习总结(四)——Eclipse在线安装ADT插件
Android开发学习总结(四)--Eclipse在线安装ADT插件 要想使用Eclipse开发Android应用,首先要安装一个ADT插件,在此记录一下在Eclipse中采用在线安装的方式ADT插件 ...
- android开发用百度识别图片格式,Android开发学习之路-机器学习库(图像识别)、百度翻译...
对于机器学习也不是了解的很深入,今天无意中在GitHub看到一个star的比较多的库,就用着试一试,效果也还行.比是可能比不上TensorFlow的,但是在Android上用起来比较简单,毕竟Tens ...
- Android 开发学习记录(4)---- httpclient使用(三)
之前在Android 开发学习记录(3)---- httpclient使用(二)中介绍了如何使用httpclient访问需要账户登录的网址,当然首先是要有一个合法的登录账户. 但是现在好多网站在登录时 ...
- 《Android Studio应用开发实战详解》——第1章,第1.5节Android开发学习路线图
本节书摘来自异步社区<Android Studio应用开发实战详解>一书中的第1章,第1.5节Android开发学习路线图,作者 王翠萍,更多章节内容可以访问云栖社区"异步社区& ...
最新文章
- 机器学习中的交叉验证与有关定理
- FPGA之道(37)Verilog中的编写注意事项
- python 人气高的项目_给大家推荐:五个Python小项目,Github上的人气很高的
- C++中初始化列表的使用
- VTK:图片之ImageSinusoidSource
- Java学习之String StringBuffer StringBuilder区别
- C语言——顺序栈(Stack)
- CMD不能显示中文解决方案
- PC端 java 开发蓝牙所遇到的问题
- 怎样关闭eclipse中的tooltip提示
- py 生产csv文件_数据处理技巧 | glob 被忽略的超强文件批量处理模块
- win下的一款自动远程备份工具
- 【SecureCRT】SecureCRT设置上传下载目录
- 文件上传之IIS—put漏洞
- dell主板恢复出厂设置_如何清除DELL电脑主板CMOS信息并恢复默认设置
- java视频格式转_java 实现 视频格式转换(转)
- git命令之配置diff3冲突合并方式及KDiff3工具
- 关于DBF文件格式的详细说明
- ChemDraw怎样输入大括符?
- vue el-table 表格宽度无法缩小自适应
热门文章
- Dapper and Repository Pattern in MVC
- mysql /*! 50100 ... */ 条件编译
- vue去掉#——History模式
- Android Studio 完美解决 “Android SDK Manager 无法更新“、 ”connection error” 的问题...
- LOW_VALUE、HIGH_VALUE、ENDPOINT_VALUE转换--UTL_RAW、DBMS_STATS.CONVERT_RAW_VALUE
- 遇见格灵深瞳那一刻,我一见倾心
- require.js的AMD规范详解
- Visual Entity 手册(一)简介
- 1438. 绝对差不超过限制的最长连续子数组
- 【论文写作】毕业论文写作——摘要篇