android.os.handler相关知识整理
Handler在Android里负责发送和处理消息。它的主要用途有:
Handler中分发消息的一些方法
post(Runnable)
postAtTime(Runnable,long)
postDelayed(Runnable long)
sendEmptyMessage(int)
sendMessage(Message)
sendMessageAtTime(Message,long)
sendMessageDelayed(Message,long)
以上post类方法允许你排列一个Runnable对象到主线程队列中,
sendMessage类方法,允许你安排一个带数据的Message对象到队列中,等待更新.
当应用程序启动时,Android首先会开启一个主线程(也就是UI线程),主线程为管理界面中的UI控件,进行事件分发,比如说,你要是点击一个Button,Android会分发事件到Button上,来响应你的操作。 如果此时需要一个耗时的操作,例如:联网读取数据,或者读取本地较大的一个文件的时候,你不能把这些操作放在主线程中,,如果你放在主线程中的话,界面会出现假死现象,如果5秒钟还没有完成的话,会收到Android系统的一个错误提示 "强制关闭", 这个时候我们需要把这些耗时的操作,放在一个子线程中,因为子线程涉及到UI更新,Android主线程是线程不安全的,也就是说,更新UI只能在主线程中更新,子线程中操作是危险的.这个时候,由于Handler运行在主线程中(UI线程中), 它与子线程可以通过Message对象来传递数据,这个时候,Handler就承担着接受子线程传过来的Message对象(里面包含数据) ,把这些消息放入主线程队列中,配合主线程进行更新UI。
相关推荐
Memory safer implementation of android.os.Handler Problem Original implementation of Handler always keeps hard reference to handler in queue of execution. Any object in Message or Runnable posted to ...
android.os.Handler的内存安全实现 问题 Handler的原始实现始终在执行队列中始终保持对处理程序的硬引用。 张贴到android.os.Handler Message或Runnable中的任何对象将在一段时间内被硬引用。 如果创建匿名Runnable...
Android 错误解决方法大集合 Android 错误解决方法大集合文章总结了 Android 开发中常见的四个错误解决方法,涵盖了网络连接、安装 APK、SDK 版本和内容描述等多个方面。 一、 android java.net....
import android.os.Handler; import android.app.Activity; import android.view.Menu; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { ...
好久不写Android代码手都生了,找出自己之前写的程序发现跑不了了,也没啥特别的错误提示,就看到一句有用的错误Caused by: android.os.NetworkOnMainThreadException,查了下原因上在4.0之后在主线程里面执行Http...
import android.os.Handler; import android.os.HandlerThread; import android.os.Looper; import android.os.Message; import android.util.Log; import android.view.View; import android.view.View....
问题: 在百度地图页面(Activity为singleTask)跳转到别的页面 ,离开地图页面。偶发性空指针,具体日志信息如下: 解决: 1、原本我在生命周期onStop里调用的mlocationClient.stop();...作者:Android_Mr_Zhao
at android.os.Handler.dispatchMessage(Handler.java:110) at android.os.Looper.loop(Looper.java:203) at android.app.ActivityThread.main(ActivityThread.java:6361) at java.lang.reflect.Method.invoke...
import android.os.Handler; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; /* * 客户端和服务器图片处理 */ public class MainActivity ...
Message message = handler.obtainMessage(); handler.sendMessage(message); handler.sendEmptyMessageDelayed(0, 1000); // 每秒更新一次 } } ``` `updateTimer`方法负责更新TextView中的计时显示: ```java...
- StartClickListener和EndClickListener两个内部类实现了OnClickListener接口,分别在点击事件发生时调用handler.post和handler.removeCallbacks方法,实现线程的启动和停止。 - Runnable接口的update_thread实例...
import android.os.Handler; import android.os.Message; import android.app.Activity; import android.content.Intent; import android.view.Menu; import android.webkit.WebView; public class Activityload ...
import android.os.Handler; import android.os.Message; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.TextView; public class MainActivity extends ...
我们需要使用Handler类与Message类来处理运行线程,使用Java的Calendar与Thread类来取得系统时间,在编写代码时别忘了引入android.os.Handler;android.os.Message;java.util.Calendar;等相关类; 在编写时,我们...
- `android.os.Handler`: 异步消息处理。 - `android.view.SurfaceHolder`: 控制Surface的生命周期。 - `android.view.SurfaceView`: 显示摄像头流的视图组件。 - `android.widget.LinearLayout`: 布局容器。 #...
文章目录android.os.NetworkOnMainThreadException问题分析查阅资料解决方案知识要点: RunOnUiThread 和 new Thread(new Runnable()).start() 的区别先说一下 RunonUiThread这时候就需要使用 handler来处理消息 ...
- 使用`handler.postDelayed(this, 300);`来定时(每隔300毫秒)重新调用自身,从而形成连续的颜色变化效果。 - `onCreate(Bundle savedInstanceState)`: Activity生命周期中的一个回调方法,在Activity创建时被...
import org.anddev.andengine.engine.handler.timer.ITimerCallback; import org.anddev.andengine.engine.handler.timer.TimerHandler; import org.anddev.andengine.engine.options.EngineOptions; import org....
Handler,全称`android.os.Handler`,是Android系统提供的一种消息处理机制。它的主要作用是在不同的线程之间传递消息,尤其是主线程(UI线程)与后台线程之间的通信。通过创建Handler实例并关联到特定的线程,我们...