Android定时执行01

public  class  TestActivity  extends  Activity{
     private  TextView mTextView;
                                                                                                                                                                                                                                                                          
     private  Handler mHandler;
                                                                                                                                                                                                                                                                          
     @Override
     protected  void  onCreate(Bundle savedInstanceState)
     {
         // TODO Auto-generated method stub
         super .onCreate(savedInstanceState);
         setContentView(R.layout.main);
         mHandler =  new  Handler();
         mTextView = (TextView) findViewById(R.id.text);
         mHandler.post( new  Runnable() {
             @Override
             public  void  run()
             {
                 // TODO Auto-generated method stub
                 mTextView.setText(String.valueOf((Math.random() *  100 )));
                 mHandler.postDelayed( this 2000 );
             }
         });
     }

}

使用Handler,它有一个方法postDelayed(Runnable , long);
Runnable是一个线程,可以是在textView上写数据;
long代表延时,单位是毫秒

main.xml中就是一个textview。

代码就是通过Handler不断把写textview的线程放到消息队列中,系统从消息队列获取消息后,就在UI线程绘制textview。


这样就能在停留此Activity两秒后不断循环执行更新TextView的内容(要记得适当位置加上handler.removeCallbacks(this); 停止Handler,否则有可能因主UI线程阻塞而出错,可以在onstop()、ondestory()加上),但是如果想要在后台不断更新数据,跳到其他Activity还能向后台获得数据并更新数据,就要在Service使用心跳算法,不断向服务器申请了。。。


最终修改为:

public class MyListActivity extends Activity {
private ListView lv_scheme = null;
private TextView tv_refresh;
private SchemeAdapter adapter = null;
private TextView tv_title = null;
/** 用于不断更新数据 */
private Handler handler = new Handler();
private Runnable runnable = new Runnable() {
@Override
public void run() {
adapter.clear();
initList();
L.e("每隔5秒更新一次航班列表");
handler.postDelayed(this, 10000);
}
};


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.act_scheme);
initControler();
initList();
initListener();
}


private void initControler() {
lv_scheme = GetControl(R.id.lv_scheme);
tv_refresh = GetControl(R.id.tv_refresh);
tv_title = GetControl(R.id.tv_title);
adapter = new SchemeAdapter(lv_scheme, this);
tv_title.setText(AppConfig.getInstance().getDockName());
}


/** 获取服务器信息 */
private void initList() {
SchemeSend data = new SchemeSend();
data.p_ID = AppConfig.getInstance().getId();
Type type = new TypeToken<List<SchemeResponse>>() {
}.getType();
SchemeController.getInstance().httptask(SchemeController.CMD_GETLIST, data, MyListActivity.this, new OnArrayListHttpResponse<SchemeResponse>(type) {
@Override
public void res(final List<SchemeResponse> response, Object send) {
runOnUiThread(new Runnable() {
@Override
public void run() {
adapter.addDataList(response);
adapter.refash();
}
});
}


@Override
public void onBillError(int errcode, String errmessage, Object send) {
}
}, "正在获取列表");
}


private void initListener() {
tv_refresh.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
adapter.clear();
initList();
}
});
}


@Override
protected void onStart() {
handler.postDelayed(runnable, 6000);
super.onStart();
}


@Override
protected void onStop() {
handler.removeCallbacks(runnable);
super.onStop();
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值