码迷,mamicode.com
首页 > 移动开发 > 详细

【Android】实现线程异步小技巧

时间:2017-11-08 20:10:37      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:bsp   取数据   发送   util   技巧   sgid   gid   获得   timertask   

方式不止一种,这里使用的是Timer类,创建一个定时器。我们经常需要获得移动设备端口的显示屏信息,但是onCreate()方法执行的时候,OnShow()方法不一定执行了,也就是说,在执行Oncreate()时候屏幕还没加载出来,所以这时候可以应用一个异步机制获取数据。

import android.app.Activity;
import android.os.Handler;
import android.os.Message;
import android.view.View;

import java.util.Timer;
import java.util.TimerTask;

/**
 * Created by Lenovo on 2017/6/2.
 */
public class MyActivity extends Activity{
    public void ViewAfterShow(int width,int hight){

    }
    /**
     * 使用线程异步,获取视图上的数据,比如高和宽
     * @param viewID 视图ID
     * @param msgID 消息ID
     */
    public  void ViewShowListen(int viewID,int msgID){
        final int f_viewID = viewID;
        final int f_msgID = msgID;
        final Timer f_timer = new Timer();
        final Handler f_handler = new Handler(){
            @Override
            public void handleMessage(Message msg){
                if(msg.what == f_msgID){
                    View v = (View)findViewById(f_viewID);
                    if(v.getWidth() != 0 && v.getHeight() != 0){
                        f_timer.cancel();//取消
                        ViewAfterShow(v.getWidth(),v.getHeight());//回调信息
                    }
                }
            }
        };
        //这里之所以不在该run()方法里进行操作,是因为里面的数据是最终的,所以这里应用了一个消息发送机制。
        TimerTask task = new TimerTask() {
            @Override
            public void run() {
                Message message = new Message();
                message.what = f_msgID;
                f_handler.sendMessage(message);//发送消息
            }
        };
        //延迟每次延迟10毫秒 隔500毫秒执行一次
        f_timer.schedule(task,10,500);
    }
}

 

【Android】实现线程异步小技巧

标签:bsp   取数据   发送   util   技巧   sgid   gid   获得   timertask   

原文地址:http://www.cnblogs.com/HDK2016/p/7805145.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!