私は Android アプリを作成していますが、特定のことを定期的/継続的に実行できるようにする必要があります。私は C/C++ 組み込みファームウェアのバックグラウンドを持っていますが、この新しいやり方には慣れるまでに時間がかかります。Androidには「メインループ」のようなものはないようで、すべてがイベント駆動型です...デフォルトでは、記述したすべてのコードがGUIスレッドで動作することも理解しており、おそらく新しいスレッドを作成する必要があります「メインループ」に相当するものを実行するには...
これまでのところ、「doInBackground」メソッドに無限ループ (私のメイン ループ) が含まれている AsyncTask クラスの実装があります。このクラスのインスタンスを作成し、アプリの起動時にすぐに実行します。私が抱えている問題は、このスレッドとユーザー インターフェイスの間の相互作用にあります... メイン ループ スレッドで何かが発生し、GUI を更新したい場合、GUI スレッドで実行される「publishProgress」を呼び出す必要があることを理解してください。 . これにはいくつかの問題があります。主に、この「onProgressUpdate」メソッドで実行しようとした多くのことが機能しないか、予測可能な時間内に発生しないことです。
私の質問は、私がやろうとしていることを達成するためのより良い方法はありますか? 一般に、アプリケーションの実行中に定期的および/または継続的に実行したいコード、タイムリーにユーザー インターフェイスと対話する必要があるコードがある場合、ほとんどの人は何をしますか (タイムリーとは遅延ゼロを意味します)。
ありがとうございました。
public class MainLoopThread extends AsyncTask<Void, Void, Void>
{
@Override
protected Void doInBackground(Void... arg0)
{
while(true)
{
//Do stuff
//Update GUI
publishProgress();
}
}
protected void onProgressUpdate(Void...voids)
{
//Update GUI
}
}