@Override
public void run() {
while ( true ){
try {
SettingLocationTime();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
private void SettingLocationTime() throws InterruptedException{
if (handler!= null ){
SendMessage(post_data);
time = setting_time> 0 ?setting_time:default_time;
// Log.i(TAG, TAG+" SettingLocationTime() time:"+time);
Thread.sleep(time* 1000 );
}
}
/**
* 可以把Bundle放在class被加载的地方,实例化这个对象
* 装载完一次数据之后,下次调用之前执行clear()函数即可,此时的bundle对象就相当于一个铁碗
* 每次装不同的水而已,就避免了每次开辟新的内存空间来存放Bundle对象
* Message 对象就更简单了,因为我这类回调了一个Handler对象过来,我们可以直接
* 调用Handler对象的obtainMessage()函数,这个函数当Handler被创建时,不管你用不用,它都在那里
* 随Handler消亡而消亡,不需要实例化,不需要创建,可以直接取出来用,这又避免了每次开辟新的内存空间
* 来装载Message对象,obtainMessage() 函数 来自 MessagePool
* **/
private void SendMessage( byte []data){
bundle.clear(); // 倒掉碗里的老水(清空之前的缓存),装新来的水(填充来自回调函数的新数据)
byte []_data=ByteParseBeanTools.PostProtocolByte(
ByteProtocolSessionType.LOCATION_STATE_SEND, data);
Message msg = handler.obtainMessage(); // 来自 MessagePool
msg.what=MainSessionUtil.SEND_POST_BYETS_DATA;
bundle.putByteArray(MainSessionUtil.BYTES_DATA_KEY, _data); // 装新的水(填充新的数据源)
msg.setData(bundle);
handler.sendMessage(msg);
}
|