一直以来对Android socket通信都很模糊,今天终于研究了一个网上的例子,自己又修改了下,算是对Android socket通信有点了解了。
下面是具体的代码,说明都在注释中了。需要注意的是,只有客户端发送了信息给服务器后,服务器才能响应客户端的输入,然后返回信息给客户端,这是客户端才能读取服务器返回的信息。如果客户端和服务器都处于等待对方的信息,那样就会造成阻塞,导致ANR了。
...
分类:
移动开发 时间:
2015-03-05 14:57:48
阅读次数:
135
在上一课中有介绍一系列的BitmapFactory.decode*) 方法,当数据源是网络或者是磁盘时(或者是任何实际源不在内存的),这些方法都不应该在main UI 线程中执行。那些情况下加载数据是不可以预知的,它依赖于许多因素(从网络或者硬盘读取数据的速度, 图片的大小, CPU的速度, etc.)。如果其中任何一个任务卡住了UI thread, 系统会出现ANR的错误。
这一节课会介...
分类:
编程语言 时间:
2015-03-03 22:14:28
阅读次数:
238
先了解两个概念
1、UI:User Interface的缩写,用户界面的意思。你可以不恰当的理解为我们能够看到的,操作的东西;在Android中什么才称为UI呢,可以简单的理解为View及其子类等元素。这是一个不够正确的概念,只是对新手做一个简单的抛砖引玉。
2、ANR:Application Not Responding,意思是程序没有响应。
在如下情况下,Android会报出ANR错...
分类:
编程语言 时间:
2015-02-09 12:58:32
阅读次数:
272
开发过程中,解决各种问题bug,不管是性能问题还是ANR问题,还是各种严重崩溃问题,经常需要抓取log,从log中分析找到问题源头,并进行修改。
但是,统一时间点下,可能会有很多log打印出来,分属于各个不同的进程。因此,我们需要的部分可能已经被淹没了。因此,使用工具或者命令抓取需要的log部分,并尽可能少的减少遗漏,是非常有必要的。
通常情况下,可以使用工具,比如eclipse 的logca...
分类:
数据库 时间:
2015-02-08 15:34:02
阅读次数:
998
Android 性能调优
TPS(TransactionPer Second)每秒处理的事物数,是系统吞吐量的指标。响应时间,用户操作开始到系统给用户正确反馈的时间。一般包括系统处理时间+网络传输时间+展现时间
同步改异步
耗时操作放在线程中执行防止占用主线程,一定程度上解决anr,注意线程和service结合(防止activity被回收后线程也被回收)以及线程的数量。
...
分类:
移动开发 时间:
2015-02-05 11:26:47
阅读次数:
327
我们遇到Android系统开机界面(bootanimation)后,系统没法运行起来的问题,
系统一直出现 waiting for ...日志
似乎在等什么服务启动
因此怀疑system server 被block了
调试方法如下:
1. adb shell mkdir /data/anr/
2. adb shell ps | grep system_server
syste...
分类:
移动开发 时间:
2015-01-29 16:01:26
阅读次数:
210
一:什么是ANR ANR:Application Not Responding,即应用无响应二:ANR的类型 ANR一般有三种类型: 1:KeyDispatchTimeout(5 seconds) --主要类型 按键或触摸事件在特定时间内无响应 2:BroadcastTimeout(1...
分类:
其他好文 时间:
2015-01-28 21:08:35
阅读次数:
169
Android中通常分为主线程(UI Thread/ Main Thread)和工作线程(worker Thread).所有的组件默认都是在主线程里面的,当进行一些耗时的操作时,比如:访问网络或者对数据库进行处理的时候UI Thread 就会被阻塞,如果阻塞时间超过5秒,这是就会出现比较常见的ANR...
分类:
移动开发 时间:
2015-01-28 17:23:37
阅读次数:
221
当应用程序启动时,会开启一个主线程(也就是UI线程),由它来管理UI,监听用户点击,来响应用户并分发事件等。所有一般在主线程中不要执行比较耗时的操作,如延时、下载网络数据、死循环,否则出现ANR错误。所以就将这些操作放在子线程中,但是由于Android UI线程是不安全的,所有只能在主线程中更新UI。使用Thread来创建子线程、使用Message来存储数据、使用Handler来处理消息数据。...
分类:
移动开发 时间:
2015-01-26 12:02:45
阅读次数:
173
有时候,我们需要遍历系统中的所有文件。通常一个移动产品内的文件数量是非常巨大的,我们需要为这件事开启一个异步任务,否则将引起ANR,使应用崩溃。 关于AsyncTask AsyncTask这个类是非常方便的轻量级异步任务类。它提供了任务前,任务,任务后等方法,可以非常简单地完成异步任务的建立...
分类:
其他好文 时间:
2015-01-25 00:08:19
阅读次数:
176