原则

    在主UI线程使用,非UI线程调用,可以通过Handler发送消息,在UI线程弹窗


简单例子


Toast toast = Toast.makeText(getApplicationContext(),"请及时处理你的数据请求,萌萌哒", Toast.LENGTH_LONG);

toast.setGravity(Gravity.CENTER, 0, 0);

toast.show();



第一

使用Looper类,将线程变成一个消息线程。缺陷:导致该线程循环等待消息,永远无法退出,并且后面的代码无法继续执行,多次执行导致线程越来越多

Looper.prepare();

Toast toast = Toast.makeText(getApplicationContext(),"请及时处理你的数据请求,萌萌哒", Toast.LENGTH_LONG);

        toast.setGravity(Gravity.CENTER, 0, 0);

toast.show();

Looper.loop();



第二

    通过Handler将消息传递给UI线程处理

import android.os.Handler;

import android.os.Message;


public class MyThread extends Thread{

private Handler handle = null;

public void setHandler(Handler handle){

this.handle = handle;

}

@Override

public void run(){

if (null == handle)

{

return;

}

Message msg = handle.obtainMessage();

msg.what = 1;

handle.sendMessage(msg);

}


探索其他非UI线程调用toast异常崩溃退出的原因

摘自:http://bbs.51cto.com/thread-1157072-1.html


更多相关文章

  1. android.os.NetworkOnMainThreadException
  2. Android中使用高德地图inflating class com.amap.api.maps.MapVi
  3. android Sqlite多线程访问异常解决方案
  4. telephony
  5. 如何实现Android(安卓)布局背景模糊化处理
  6. Android输入管理_InputManager服务启动
  7. Android消息推送
  8. android xml文件解析
  9. Android(安卓)中文 API (101) —— AsyncTask

随机推荐

  1. 为什么MySQL选择Repeatable Read作为默认
  2. 使用ORM新增数据在Mysql中的操作步骤
  3. mysql脏页是什么
  4. 为什么MySQL分页用limit会越来越慢
  5. MySQL深度分页(千万级数据量如何快速分页
  6. ORM模型框架操作mysql数据库的方法
  7. mysql 直接拷贝data 目录下文件还原数据
  8. MySQL 四种连接和多表查询详解
  9. MySQL索引是啥?不懂就问
  10. MySQL 聚合函数排序