Android在非UI线程中显示Toast
来源:互联网 发布:小米note网络制式查询 编辑:程序博客网 时间:2024/05/20 14:28
- public void showToast(String msg){
- Looper.prepare();
- Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show();
- Looper.loop();
- }
public void showToast(String msg){Looper.prepare();Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show();Looper.loop();}
只需要加上那两句就能在非UI线程中显示Toast
- Toast里面的show()
- public void show() {
- ...
- service.enqueueToast(pkg, tn, mDuration); //把这个toast插入到一个队列里面
- ...
- }
Toast里面的show() public void show() { ... service.enqueueToast(pkg, tn, mDuration); //把这个toast插入到一个队列里面 ... }
- Looper
- public static final void prepare() {
- if (sThreadLocal.get() != null) {
- throw new RuntimeException("Only one Looper may be created per thread");
- }
- sThreadLocal.set(new Looper()); //在当前线程中创建一个Looper
- }
- private Looper() {
- mQueue = new MessageQueue(); //关键在这,创建Looper都干了什么。 其实是创建了消息队列
- mRun = true;
- mThread = Thread.currentThread();
- }
Looperpublic static final void prepare() { if (sThreadLocal.get() != null) { throw new RuntimeException("Only one Looper may be created per thread"); } sThreadLocal.set(new Looper()); //在当前线程中创建一个Looper }private Looper() { mQueue = new MessageQueue(); //关键在这,创建Looper都干了什么。 其实是创建了消息队列 mRun = true; mThread = Thread.currentThread(); }
- public int onStartCommand(Intent intent, int flags, int startId) {
- // TODO Auto-generated method stub
- System.out.println("OnStartCommand");
- handler = new Handler(Looper.getMainLooper());
- handler.post(new Runnable(){
- public void run() {
- // TODO Auto-generated method stub
- System.out.println("in run");
- Toast toast = Toast.makeText(getApplicationContext(),"onStartCommand",Toast.LENGTH_SHORT);
- toast.setGravity(Gravity.TOP,0, 220);
- toast.show();
- }
- });
- return super.onStartCommand(intent, flags, startId);
- }
public int onStartCommand(Intent intent, int flags, int startId) {// TODO Auto-generated method stubSystem.out.println("OnStartCommand");handler = new Handler(Looper.getMainLooper());handler.post(new Runnable(){public void run() {// TODO Auto-generated method stubSystem.out.println("in run");Toast toast = Toast.makeText(getApplicationContext(),"onStartCommand",Toast.LENGTH_SHORT);toast.setGravity(Gravity.TOP,0, 220);toast.show();}});return super.onStartCommand(intent, flags, startId);}
- Android在非UI线程中显示Toast
- Android在非UI线程中显示Toast
- Android在非UI线程中显示Toast
- Android在非UI线程中显示Toast
- Android在非UI线程中显示Toast
- Android在非UI线程中显示Toast
- Android在非UI线程中显示Toast
- Android在非UI线程中显示Toast
- 在非UI线程中显示Toast
- 非UI线程中显示Toast
- 在非UI线程中使用Toast
- 非UI线程中Toast
- Toast在非UI主线程的其他线程中显示报错
- 非UI线程中显示Alertdialog控件或Toast
- Android在所有代码中使用Toast,包括非UI线程
- android非UI线程调用Toast
- Android Toast工具类 解决Toast重复显示,Toast一直显示,在线程中可用
- Android Activity的setTitle,AlertDialog,Toast操作是否都必须在非主UI线程中操作呢?
- 根据字段或者注释查询表清单
- Big O, Big Omega, Big Theta的含义
- Ubuntu12.10 64位 + android-ndk-r9 编译ffmpeg遇到的问题
- Minimum Path Sum
- linux文件类型详解
- Android在非UI线程中显示Toast
- C#特性-扩展方法
- Android 各版本历史主要变动(Version1.5-->4.0)全面整理
- 3D技术是亮点 松下PT-HZ900C投影机现身
- ios有哪些优点
- 语法错误 : 缺少“;”(在标识符“ContextRecord”的前面)
- CMPP和SMPP协议比较
- Java文件下载的几种方式
- 数据结构与算法系列-串-串的基本操作