티스토리 뷰
Runnable 객체를 이용하여 메인 스레드를 제어할 때, post() 메서드가 아닌 postDelayed() 를 사용하여 딜레이를 설정할 수 있다.
그렇게 어려운 내용은 아니니, 바로 예제로 넘어가자.
◎MainActivity.java
package com.example.sampledelayed;
import android.content.DialogInterface;
import android.os.Handler;
import android.os.Looper;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
TextView textView;
Handler handler = new Handler(Looper.getMainLooper());
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.textView);
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
request();
}
});
}
private void request() {
String title = "원격 요청";
String message = "데이터를 요청하시겠습니까?";
String titleButtonYes = "예";
String titleButtonNo = "아니오";
AlertDialog dialog = makeRequestDialog(title, message, titleButtonYes, titleButtonNo);
dialog.show();
textView.setText("대화상자 표시중...");
}
private AlertDialog makeRequestDialog(CharSequence title, CharSequence message, CharSequence titleButtonYes, CharSequence titleButtonNo) {
AlertDialog.Builder requestDialog = new AlertDialog.Builder(this);
requestDialog.setTitle(title);
requestDialog.setMessage(message);
requestDialog.setPositiveButton(titleButtonYes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
textView.setText("5초 후에 결과 표시됨.");
handler.postDelayed(new Runnable() {
@Override
public void run() {
textView.setText("요청 완료됨.");
}
}, 5000);
}
});
requestDialog.setNeutralButton(titleButtonNo, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {}
});
return requestDialog.create();
}
}
버튼을 클릭하면 AlertDialog를 하나 생성한 뒤, yes 가 눌린다면 5초 뒤에 TextView의 값을 변경하는 간단한 코드이다.
반응형
'Mobile > Android' 카테고리의 다른 글
[Android] AsyncTask (0) | 2022.04.07 |
---|---|
[Android] Thread로 메시지 전송 (0) | 2022.04.07 |
[Android] Runnable (0) | 2022.04.06 |
[Android] Thread & Handler (0) | 2022.04.05 |
[Android] 선택 위젯 4: Spinner (0) | 2022.04.03 |
Comments
최근에 올라온 글
최근에 달린 댓글
TAG
- javascript
- redux
- 인천 구월동 맛집
- Promise
- 파니노구스토
- react-native
- Async
- await
- 정보보안기사 #실기 #정리
- 이탈리안 레스토랑
- react
- 맛집
- redux-thunk
- 인천 구월동 이탈리안 맛집
- AsyncStorage
- Total
- Today
- Yesterday