1
私はこれを理解するのに何時間も努力してきましたが、さまざまなテクニックを試しましたが、バックグラウンドでタスクを実行するようには見えません。私は私のOnClickListener
でこのコードを持って:バックグラウンドでコードを実行してスレッドを検証する
new Thread(new Runnable() {
public void run() {
//doing some work in the background here
Log.d(tag, "Thread: " + checkThread());
}
}).start();
とコードがメイン/ UIスレッドまたはバックグラウンドで実行された場合、スレッド内では、私がチェックしています。だから私はこれを持っている:
private String checkThread() {
if (Looper.getMainLooper().getThread() == Thread.currentThread()) {
return "Main";
} else {
return "Background";
}
}
しかし、上記は常に "メイン"を返します。私はHandler
、AsyncTask
などを試しましたが、それらのすべてが同じものを返します。
私のコードをバックグラウンドで実行し、メインスレッドでは実行されていないことをログに表示する方法については、
https://developer.android.com/guide/components/services.html 貼り付けるサービスは、アプリケーションを強制終了しても背景を実行するのに役立ちます –
コードをコピーして貼り付けて返す'D/MainActivity:Thread:Background' –
バックグラウンドスレッドでRetrofit 2コールバックを実行していて、' onResponse'で 'checkThread()'を呼び出すはずです – Zishan