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

Android 定时器的三种实现方法

2016-12-16 10:29 274 查看

Android 定时器的三种实现方法

第一种:采用Handler与线程的sleep(long)方法

“`JAVA

public class MainActivity extends Activity {

Handler handler;

private TextView tv;

int i = 0;

public boolean isstop = false;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.tv);

// 定时器的三种实现方法
// -----------------------------------------------------------------------------
// 第一种:采用Handler与线程的sleep(long)方法

handler = new Handler() {
public void handleMessage(android.os.Message msg) {
tv.setText(i++ + "");

// 开启定时器线程
new Thread(new MyThread()).start();

};

};

}

public void start(View view) {
isstop = false;
// 开启定时器线程
new Thread(new MyThread()).start();

}

// 停止
public void stop(View view) {
isstop = true;

}

class MyThread implements Runnable {

@Override
public void run() {
if (!isstop) {

// TODO Auto-generated method stub
try {
Thread.sleep(1 * 1000);
Message msg = new Message();
msg.what = 1;
handler.sendMessage(msg);

} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}

}


}





第二种:采用Handler的postDelayed(Runnable, long)方法

“`java

public class MainActivity extends Activity {

Handler handler;

private TextView tv;

int i = 0;

Runnable runnable;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.tv);

handler = new Handler();
runnable = new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
// 要做的事情
tv.setText(i++ + "");
handler.postDelayed(runnable, 2 * 1000);
}
};

}

public void start(View view) {
// 开启定时器线程
handler.postDelayed(runnable, 2 * 1000);//两秒后执行一次runnable的 run() 方法.

}

// 停止
public void stop(View view) {
handler.removeCallbacks(runnable);
}


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android 定时器