Android 用代理模式处理海量高频数据更新
2010-12-18 08:04:10 来源:WEB开发网@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final TextView tv = (TextView)findViewById(R.id.txtview);
new Thread() {
java.util.Random rand = new java.util.Random();
long lastUpdate = System.currentTimeMillis();
public void run() {
while(!Thread.interrupted() || !TestActivity.this.isFinishing()) {
//模拟高频更新数据
if( System.currentTimeMillis() - lastUpdate < 2000l) { //设置两次动画的最少间隔时间
continue;
}
else
lastUpdate = System.currentTimeMillis();
CommonDefn.DoThingsReturn updateWrapper = new CommonDefn.DoThingsReturn(String.valueOf(rand.nextInt()) , tv,0);
ColorRefreshTask refresh = new ColorRefreshTask(TestActivity.this,CommonDefn.HIGHLIGHT_BACKGROUND_COLOR_INDEX, updateWrapper);
_messageHandler.postDelayed(refresh, 200); //ready to for the current updating
}
}
}.start();
}
}
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.TextView;
public class TestActivity extends Activity implements RefreshHandlerInterface{
private Handler _messageHandler = new Handler();
@Override
public Handler getHandler() {
return _messageHandler;
}
@Override
public void updateBackground(Object handlerId, int color) {
if(!( handlerId instanceof CommonDefn.DoThingsReturn)) {
return; //invalid parameter
}
else {
TextView current = (TextView)(((CommonDefn.DoThingsReturn)handlerId).data);
if(current.getVisibility() != View.VISIBLE) {
点击下载:源码下载
赞助商链接