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开发学习相关推荐

  1. android培训内容明细,记录Android开发学习

    记录Android开发学习 Menu菜单学习 1.掌握Android中菜单的创建. 2.掌握Intent信使组件. 创建菜单Menu 我们模仿微信菜单栏学习,创建一个于微信菜单栏相似的菜单 那么我们应 ...

  2. android开发学习之路——连连看之游戏逻辑(五)

    GameService组件则是整个游戏逻辑实现的核心,而且GameService是一个可以复用的业务逻辑类. (一)定义GameService组件接口 根据前面程序对GameService组件的依赖, ...

  3. Android开发学习---使用Intelij idea 13.1 进行android 开发

    Android开发学习---使用Intelij idea 13.1 进行android 开发 原文:Android开发学习---使用Intelij idea 13.1 进行android 开发 1.为 ...

  4. 《Java和Android开发学习指南(第2版)》—— 1.5 本章小结

    本节书摘来异步社区<Java和Android开发学习指南(第2版)>一书中的第1章,第1.5节,作者:[加]Budi Kurniawan,更多章节内容可以访问云栖社区"异步社区& ...

  5. 《Java和Android开发学习指南(第2版)》——第2章,第2.10节本章小结

    本节书摘来自异步社区<Java和Android开发学习指南(第2版)>一书中的第2章,第2.10节本章小结,作者 [加]Budi Kurniawan,更多章节内容可以访问云栖社区" ...

  6. Android开发学习之基于ViewPager实现Gallery画廊效果

    通过我们前面的学习,我们知道ViewPager是可以做出近乎完美的滑动体验,回顾整个Android,我们发现Gallery具备同样的特点,于是我们大胆地猜想,Gallery是否和ViewPager之间 ...

  7. Android开发学习总结(四)——Eclipse在线安装ADT插件

    Android开发学习总结(四)--Eclipse在线安装ADT插件 要想使用Eclipse开发Android应用,首先要安装一个ADT插件,在此记录一下在Eclipse中采用在线安装的方式ADT插件 ...

  8. android开发用百度识别图片格式,Android开发学习之路-机器学习库(图像识别)、百度翻译...

    对于机器学习也不是了解的很深入,今天无意中在GitHub看到一个star的比较多的库,就用着试一试,效果也还行.比是可能比不上TensorFlow的,但是在Android上用起来比较简单,毕竟Tens ...

  9. Android 开发学习记录(4)---- httpclient使用(三)

    之前在Android 开发学习记录(3)---- httpclient使用(二)中介绍了如何使用httpclient访问需要账户登录的网址,当然首先是要有一个合法的登录账户. 但是现在好多网站在登录时 ...

  10. 《Android Studio应用开发实战详解》——第1章,第1.5节Android开发学习路线图

    本节书摘来自异步社区<Android Studio应用开发实战详解>一书中的第1章,第1.5节Android开发学习路线图,作者 王翠萍,更多章节内容可以访问云栖社区"异步社区& ...

最新文章

  1. 机器学习中的交叉验证与有关定理
  2. FPGA之道(37)Verilog中的编写注意事项
  3. python 人气高的项目_给大家推荐:五个Python小项目,Github上的人气很高的
  4. C++中初始化列表的使用
  5. VTK:图片之ImageSinusoidSource
  6. Java学习之String StringBuffer StringBuilder区别
  7. C语言——顺序栈(Stack)
  8. CMD不能显示中文解决方案
  9. PC端 java 开发蓝牙所遇到的问题
  10. 怎样关闭eclipse中的tooltip提示
  11. py 生产csv文件_数据处理技巧 | glob 被忽略的超强文件批量处理模块
  12. win下的一款自动远程备份工具
  13. 【SecureCRT】SecureCRT设置上传下载目录
  14. 文件上传之IIS—put漏洞
  15. dell主板恢复出厂设置_如何清除DELL电脑主板CMOS信息并恢复默认设置
  16. java视频格式转_java 实现 视频格式转换(转)
  17. git命令之配置diff3冲突合并方式及KDiff3工具
  18. 关于DBF文件格式的详细说明
  19. ChemDraw怎样输入大括符?
  20. vue el-table 表格宽度无法缩小自适应

热门文章

  1. Dapper and Repository Pattern in MVC
  2. mysql /*! 50100 ... */ 条件编译
  3. vue去掉#——History模式
  4. Android Studio 完美解决 “Android SDK Manager 无法更新“、 ”connection error” 的问题...
  5. LOW_VALUE、HIGH_VALUE、ENDPOINT_VALUE转换--UTL_RAW、DBMS_STATS.CONVERT_RAW_VALUE
  6. 遇见格灵深瞳那一刻,我一见倾心
  7. require.js的AMD规范详解
  8. Visual Entity 手册(一)简介
  9. 1438. 绝对差不超过限制的最长连续子数组
  10. 【论文写作】毕业论文写作——摘要篇