在Android编程的过程中,如果在Activity中某个操作会运行比较长的时间,比如:下载文件.这个时候如果在主线程中直接下载文件,会造成Activity卡死的现象:而且如果时间超过5秒,会有ANR报错. 在这种情况下, 可以使用Thread来处理,而如果在这期间需要根据Thread中的操作来更新界面,就需要使用Handler来处理. 涉及到的类主要有:Handler.Thread.Message.MessageQueue.Looper.HandlerThread 如果是针对上面的情况,可以只…
项目中异步调用 ping 和 nmap 实现对目标 ip 和所在网关的探测 Subprocess.STREAM 不用担心进程返回数据过大造成的死锁, Subprocess.PIPE 会有这个问题. import tornado.gen from tornado.process import Subprocess @tornado.gen.coroutine def run_command(command): """run command""" p…
答案:是的. handler.postDelayed(new Runnable() { @Override public void run() { tv_word.setVisibility(View.GONE); } },3000); 官方说法: 开启的runnable会在这个handler所依附线程中运行,而这个handler是在UI线程中创建的,所以 自然地依附在主线程中了. postDelayed(new Runnable()) 而没有重新生成新的 New Thread() 小结 通常来…
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38476887 ,本文出自[张鸿洋的博客] 最近创建了一个群,方便大家交流,群号:55032675 上一篇博客介绍了Android异步消息处理机制,如果你还不了解,可以看:Android 异步消息处理机制 让你深入理解 Looper.Handler.Message三者关系 .那篇博客的最后,提出可以把异步消息处理机制不仅仅是在MainActivity中更新UI,可以用到别的地方,…
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38476887 ,本文出自[张鸿洋的博客] 近期创建了一个群.方便大家交流,群号:55032675 上一篇博客介绍了Android异步消息处理机制.假设你还不了解,能够看:Android 异步消息处理机制 让你深入理解 Looper.Handler.Message三者关系 . 那篇博客的最后,提出能够把异步消息处理机制不仅仅是在MainActivity中更新UI.能够用到别的地方…
概述 AsyncTask可以很好的,准确的使用UI线程,他可以将一个比较耗时(几秒钟)的动作运行在后台,并且能将结果返回至UI线程中,不需要通过(Thread操作和Handler操作). 使用时必须通过创建一个AsyncTask的子类,至少重写其doInBackground(顾名思义,你想在后台执行怎样的一个操作)方法,大多数也会重写onPostExcute(后台执行完之后你想将一个结果返回在UI线程的哪里)方法. AsyncTask的三种泛型定义和四个步骤 首先了解AsyncTask的三种泛型…
Handler基本概念: Handler主要用于异步消息的处理:当发出一个消息之后,首先进入一个消息队列,发送消息的函数即刻返回,而另外一个部分逐个的在消息队列中将消息取出,然后对消息进行出来,就是发送消息和接收消息不是同步的处理. 这种机制通常用来处理相对耗时比较长的操作. Handler 常用方法: post(Runnable) postAtTime(Runnable,long) postDelayed(Runnable long) sendEmptyMessage(int) sendMes…
AsyncTask: 3个类型(Params,Progress和Result),4个步骤(onPreExecute(),doInBackground(Params…),onProgressUpdate(Progress…), onPostExecute(Result) ) Android的AsyncTask比Handler更轻量级一些,适用于简单的异步处理. 首先明确Android之所以有Handler和AsyncTask,都是为了不阻塞主线程(UI线程),且UI的更新只能在主线程中完成,因此异…
现在开发中的功能需要直接跳转到拨号.联系人.短信界面等等,查找了很多资料,自己整理了一下. 首先,我们先看拨号界面,代码如下: Intent intent =new Intent(); intent.setAction("android.intent.action.CALL_BUTTON"); startActivity(intent);和Uri uri = Uri.parse("tel:xxxxxx"); Intent intent = new Intent(In…
已经习惯了挖坑不填,继续任性一下,周一到周五继续挖坑,每周六周日负责填坑. 1.从Android UI线程谈起 出于性能考虑,Android 中的UI操作并不是线程安全的,所以Android中规定只能在主线程中修改Activity中的UI组件,故主线程又称UI线程.Android程序启动时会同时启动UI线程,该线程负责处理UI相关事件,并且进行事件分发. 不是线程安全可以理解为两个人同时独立的在一张纸上画画,最后画出来的就是错乱的.实现线程安全可以通过加锁进行数据保护,以后有机会写C++相关博客…