Android 타 이 머 는 정시 실행,중복 실행,정시 중복 실행,횟수 를 정 해 실행 하 는 다양한 방식 을 실현 합 니 다.
역할:
1.특정한 기능 을 정시 에 수행 합 니 다.
2.중복 집행,정시 중복 집행,일정한 횟수 로 특정한 기능 수행
분류:
1、 Thread(new Runnable)
2、Thread()
3、Timer
4、Handler
・・・・・
코드 는 다음 과 같 습 니 다:
1.배치
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/show_time"
android:text=" "
android:textSize="30dp"
android:layout_width="match_parent"
android:layout_height="100dp" />
<Button
android:id="@+id/timer_1"
android:textAllCaps="false"
android:text=" 1(Thread(new Runnable))"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/timer_2"
android:text=" 2(Thread()) "
android:textAllCaps="false"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/timer_3"
android:text=" 3(Timer) "
android:textAllCaps="false"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/timer_4"
android:text=" 4(Handler) "
android:textAllCaps="false"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/clear"
android:text=" "
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<TextView
android:layout_margin="10dp"
android:text=" 3 ( Timer cancel , )
:1、 3 2、 3、 3"
android:textAllCaps="false"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
2.정시 기능 실현
package com.example.leixiansheng.mytimers;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import java.util.Timer;
import java.util.TimerTask;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button timer_1, timer_2, timer_3, timer_4,clear, showTime;
private Timer timer;
private TimerTask timerTask;
private int num = 0; //
private boolean flog = true; //
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
showTime.setText(" : " + msg.what);
}
};
//handler
private Handler handlerTimer = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (flog) {
handlerTimer.sendEmptyMessageDelayed(num++, 1000);
}
showTime.setText(" : " + msg.what);
if(flog == false) {
flog = true;
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
timer_1 = (Button) findViewById(R.id.timer_1);
timer_2 = (Button) findViewById(R.id.timer_2);
timer_3 = (Button) findViewById(R.id.timer_3);
timer_4 = (Button) findViewById(R.id.timer_4);
clear = (Button) findViewById(R.id.clear);
showTime = (Button) findViewById(R.id.show_time);
timer_1.setOnClickListener(this);
timer_2.setOnClickListener(this);
timer_3.setOnClickListener(this);
timer_4.setOnClickListener(this);
clear.setOnClickListener(this);
showTime.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.timer_1:
method_1();
break;
case R.id.timer_2:
method_2();
break;
case R.id.timer_3:
method_3();
break;
case R.id.timer_4:
method_4();
break;
case R.id.clear:
num = 0;
showTime.setText(" ");
break;
case R.id.show_time:
flog = false;
break;
}
}
private void method_4() {
new Thread() {
@Override
public void run() {
super.run();
handlerTimer.sendEmptyMessage(num++);
}
}.start();
}
private void method_3() {
//Timer cancel , 。
if (flog == true) {
timer = new Timer();
timerTask = new TimerTask() {
@Override
public void run() {
handler.sendEmptyMessage(num++);
}
};
/**
* :
* :
* :
*/
timer.schedule(timerTask, 0, 1000);
} else {
timer.cancel();
// null,
timer = null;
flog = true;
}
//Timer ( )
//Timer cancel , 。
// if (flog == true) {
// timerTask = new TimerTask() {
// @Override
// public void run() {
// handler.sendEmptyMessage(num++);
// }
// };
// /**
// * :
// * :
// * :
// */
// timer.schedule(timerTask, 0, 1000);
// } else {
// timer.cancel();
// flog = true;
// }
}
private void method_2() {
//new Thread().start();
new Thread() {
@Override
public void run() {
super.run();
while (flog) {
handler.sendEmptyMessage(num++);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}.start();
flog = true;
}
private void method_1() {
// new Thread(new Runnable).start();
new Thread(new Runnable() {
@Override
public void run() {
while (flog) {
handler.sendEmptyMessage(num++);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
flog = true;
}
}
총결산이상 은 이 글 의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가 치 를 가지 기 를 바 랍 니 다.여러분 의 저희 에 대한 지지 에 감 사 드 립 니 다.더 많은 내용 을 알 고 싶다 면 아래 링크 를 보 세 요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.