私はアンドロイドで無限ループを作り、いくつかのアプリがアクティブかどうかをチェックしたいと思います。 あまりにも多くのCPUを使用せずにこれを行う最良の方法は何ですか?スレッド内で無限ループを作る方法は何ですか?アンドロイド
多分ループかハンドラか何か?
おかげで、
ピーター
私はアンドロイドで無限ループを作り、いくつかのアプリがアクティブかどうかをチェックしたいと思います。 あまりにも多くのCPUを使用せずにこれを行う最良の方法は何ですか?スレッド内で無限ループを作る方法は何ですか?アンドロイド
多分ループかハンドラか何か?
おかげで、
ピーター
あなたはちょうどあなたが終了したいときbreak
を使用してください
while(true)
ような何かを行うことができます。
はまた、このような何かを行うことができます:
boolean run = true;
while(run)
{
if()//Whatever you want to cause the loop to stop.
{
run = false;
}
}
は、私がスレッドに無限ループを使用することはありません。私はこのようなスケジュールされたタスクを使用します。 SO
private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
scheduler.scheduleAtFixedRate(yourRunnable, 8, 8, TimeUnit.HOURS);
から、その後、あなたはそれがTimeUnit
しかし頻繁にあなたが実行するスレッドを必要とするために変更することで実行する頻度をカスタマイズすることができます。
はHandlerを使用します。
import android.os.Handler;
// Create the Handler
private Handler handler = new Handler();
// Define the code block to be executed
private Runnable runnable = new Runnable() {
@Override
public void run() {
// Insert custom code here
// Repeat every 2 seconds
handler.postDelayed(runnable, 2000);
}
};
// Start the Runnable immediately
handler.post(runnable);
実行可能の実行を削除するには:
handler.removeCallbacks(runnable);
私はこれを試してみましたが、それはUIが遅くなります。 –
"runnableが初期化されていない可能性があります"エラーをエスケープする 'runnable'宣言の前に配列 ' final Runnable [] runnables = new Runnable [1];を作成しました。 postDelayed'をこの行に 'handler.postDelayed(runnables [0]、2000);' – DigaoParceiro