Android에서 비동기 처리(AsyncTask)를 반복하는 방법 알아보기
14799 단어 안드로이드AndroidStudioAsyncTask비동기 처리
환경
무엇을 원하십니까?
AsyncTask의 처리가 완료된 후에 다시 AsyncTask를 호출하는 처리를 무한 루프시키고 싶다.
작성 앱
github에 올려 보았다. 이것의 "Sample_CallBack_Repeat"
htps : // 기주 b. 코 m / 그래 r 세이 카츠 / 안 d 로이 d_ mp ぇ_
비동기 처리의 콜백이 호출될 때마다 카운트가 진행된다.
클리어로 카운트를 0으로 한다. ↓
비동기 처리를 배운 과정
샘플을 3개 만들고 방법을 배웁니다.
Sample_CallBack1에서 콜백 방법을 배웁니다.
'Sample_CallBack2'에서 콜백을 받는 위치를 변경하는 방법을 알아보세요.
Sample_CallBack_Repeat에서 비동기 처리를 반복하는 방법을 배웁니다.
모든 샘플 공통 비동기 처리 부분.
ASyncTaskTest.java
// AsyncTaskの引数は以下の用途で使用。
// 第一引数:doInBackgroundの引数
// 第二引数:onProgressUpdateの引数
// 第三引数:doInBackgroundの戻り値 and onPostExecuteの引数
public class ASyncTaskTest extends AsyncTask<String, Void, String> {
private CallBackTask mcallbacktask;
// バックグラウンドの処理。ここではTextViewの操作はできない。
@Override
protected String doInBackground(String... strings) {
return strings[0];
}
// doInBackgroundの処理が終了した後に呼ばれる。ここではTextViewの操作はできる。
@Override
protected void onPostExecute(String result) { mcallbacktask.CallBack(result); }
public void setOnCallBack(CallBackTask t_object)
{
mcallbacktask = t_object;
}
// コールバック用のインターフェース定義
interface CallBackTask
{
void CallBack(String result);
}
}
우선은 콜백의 방법을 배운다.
Sample_CallBack1.java
public class MainActivity extends AppCompatActivity {
TextView tw;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tw = (TextView)findViewById(R.id.textView);
// 非同期タスク初期化
ASyncTaskTest ak = new ASyncTaskTest();
// コールバック設定
ak.setOnCallBack(new ASyncTaskTest.CallBackTask() {
@Override
public void CallBack(String result) {
tw.setText(result);
}
});
ak.execute("Sample_Callback1"); // 非同期タスクを実行。
}
}
MainActivity에 implements ~를 기재하면,
다시 전화 요청할 onCreate 밖으로 나가는 법을 배웁니다.
Sample_CallBack2.java
public class MainActivity extends AppCompatActivity implements ASyncTaskTest.CallBackTask{
TextView tw;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tw = (TextView)findViewById(R.id.textView);
// 非同期タスク初期化
ASyncTaskTest ak = new ASyncTaskTest();
// コールバック設定
ak.setOnCallBack(this);
ak.execute("Sample_CallBack2"); // 非同期タスクを実行。
}
@Override
public void CallBack(String result) {
tw.setText(result);
}
}
마지막으로 비동기 처리를 반복하는 방법을 배웁니다.
이어서 버튼을 누른 후의 처리도 onCreate 밖으로 내는 방법을 배운다.
Sample_CallBack_Repeat.java
public class MainActivity extends AppCompatActivity implements ASyncTaskTest.CallBackTask, View.OnClickListener {
TextView tw;
ASyncTaskTest ak = new ASyncTaskTest();
Button button;
Integer ii = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tw = (TextView)findViewById(R.id.textView);
button = (Button)findViewById(R.id.button2);
// クリアボタンセット。
button.setOnClickListener(this);
// コールバック設定
ak.setOnCallBack(this);
ak.execute(String.valueOf(ii)); // 非同期タスクを実行。
}
// 非同期タスクのコールバックが呼ばれるたびに処理を行う。
@Override
public void CallBack(String result) {
tw.setText(result);
ii++;
// 再度非同期タスク設定して実行。
ak = new ASyncTaskTest();
ak.setOnCallBack(this);
ak.execute(String.valueOf(ii));
}
@Override
public void onClick(View v) {
ii = 0;
tw.setText(String.valueOf(ii));
}
}
참고
htps : // 이 m / 아 _에 시무라 / ms / 1548 02b96 bbd0d43 4
h tp // w w. 키세-ぉgs. 코 m/2017/05/31/그럼
Reference
이 문제에 관하여(Android에서 비동기 처리(AsyncTask)를 반복하는 방법 알아보기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sourcekatu/items/6487406ad2e1c53766f8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)