【Android】HandleThread后台数据处理

Android HandlerThread 完全解析(张鸿洋)

import android.os.Handler;
import android.os.HandlerThread;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Html;
import android.widget.TextView;


public class MainActivity extends AppCompatActivity {

    private TextView textView;

    private HandlerThread mMsgThread;
    private Handler mMsgHandler;
    private boolean isUpdateInfo;

    private static final int MSG_UPDATE_INFO = 0x110;

    private Handler mHandler = new Handler();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        textView = (TextView)findViewById(R.id.textView);
        initBackThread();
    }

    @Override
    protected void onResume()
    {
        super.onResume();
        //开始查询
        isUpdateInfo = true;
        mMsgHandler.sendEmptyMessage(MSG_UPDATE_INFO);
    }

    @Override
    protected void onPause()
    {
        super.onPause();
        //停止查询
        isUpdateInfo = false;
        mMsgHandler.removeMessages(MSG_UPDATE_INFO);
    }

    private void initBackThread(){
        mMsgThread = new HandlerThread("check-message-coming");
        mMsgThread.start();
        mMsgHandler = new Handler( mMsgThread.getLooper()){
            @Override
            public void handleMessage(Message msg){
                checkForUpdate();
                if ( isUpdateInfo ){
                    mMsgHandler.sendEmptyMessageDelayed( MSG_UPDATE_INFO, 1000);
                }
            }
        };
    }

    private void checkForUpdate(){
        try{
            Thread.sleep(1000);
            mHandler.post(new Runnable() {
                @Override
                public void run() {
                    String result = "实时更新中,指数:<font color='red'>%d</font>";
                    result = String.format(result, (int) (Math.random() * 3000 + 1000));
                    textView.setText(Html.fromHtml(result));
                }
            });
        }catch (InterruptedException e){
            e.printStackTrace();
        }

    }

    @Override
    protected void onDestroy()
    {
        super.onDestroy();
        //释放资源
        mMsgThread.quit();
    }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值