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.)