您的位置:首页 > 移动开发 > Android开发

Android开发系列七:怎么定时刷新界面

2013-02-27 09:09 399 查看


Android开发系列七:怎么定时刷新界面

在做Android客户端软件的时候经常需要刷新某区块内容,比如微博客户端就需要定期检测是否有新发布的微博内容,如果有新微博客户端就显示出来。Android里可以选用两种方式来实现此功能。

方式一、使用Timer(定时器)和TimerTask实现

示例代码:

public class MainActivity extends Activity {

private TextView msg;

final Handler handler = new Handler() {

public void handleMessage(Message msg) {

switch (msg.what) {

case 1:

update();

break;

}

super.handleMessage(msg);

}

void update() {

//刷新msg的内容

}

};

Timer timer = new Timer();

TimerTask task = new TimerTask() {

public void run() {

Message message = new Message();

message.what = 1;

handler.sendMessage(message);

}

};

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

msg = (TextView) findViewById(R.id.txtMsg);

msg.setText("你好啊!");

timer.schedule(task, 1000 * 40, 1000 * 30); //启动timer

}

@Override

protected void onDestroy() {

if (timer != null) {// 停止timer

timer.cancel();

timer = null;

}

super.onDestroy();

}

}

方式二、使用Runnable和Handler

示例代码

public class MainActivity extends Activity {

private TextView msg;

private Handler handler = new Handler();

private Runnable runnable = new Runnable() {

public void run() {

this.update();

handler.postDelayed(this, 1000 * 120);// 间隔120秒

}

void update() {

//刷新msg的内容

}

};

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

msg = (TextView) findViewById(R.id.txtMsg);

msg.setText("你好啊!");

handler.postDelayed(runnable, 1000 * 60);

}

@Override

protected void onDestroy() {

handler.removeCallbacks(runnable); //停止刷新

super.onDestroy();

}

}

第一种方式还适用于消息通知的方式实现更新,第二种方式通常是主动去检查是否需要刷新。对于定时刷新这种使用第二种方式更好
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: