使用ツール
Android Studio Flamingo | 2022.2.1 Patch 2
1. 通常のプロジェクトを作成する。
「Empty Activity」「Empty Views Activity」等のプロジェクトが対象。
ここでは画面を操作しないので「No Activity」でも構わないが、
画面を使用しない Android プログラムは無いと思われるので、ここでは割愛する。(選択しない)
2. MainActivity.java を編集
MainActivity.java
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
// 非同期ジョブの作成と実行 AsyncJob asyncJob = new AsyncJob(); asyncJob.execute(); // 非同期ジョブの終了を待つ while(! asyncJob.isDone()) { int step = asyncJob.getStep(); Log.d("AsyncJob(wait)",String.valueOf(step)); try { sleep(1); } catch (Exception ignored) {} // ただの Wait }
}
// 非同期ジョブの定義(クラス) static class AsyncJob { ExecutorService executorService; boolean done; int step; // コンストラクタ public AsyncJob() { done = false; step = 0; executorService = Executors.newSingleThreadExecutor(); } // スレッド駆動部 class AsyncRunnable implements Runnable { @Override public void run() { for(step = 0 ; step < 5 ; step ++) { Log.d("AsyncJob(run)", String.valueOf(step)); try { sleep(2); } catch (Exception ignored) {} // ただの Wait } done = true; executorService.shutdown(); } } // スレッドを実行する void execute() { executorService.submit(new AsyncRunnable()); } // スレッドの終了を確認する boolean isDone() { return done; } // スレッドの進捗を求める int getStep() { return step; } }
}