我已经花了好几个小时才想出这个,并尝试了各种技术,但似乎无法在后台运行任务。我在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";
}
}
但上面总是返回“Main”。我已经尝试了Handler
,AsyncTask
等等,但所有这些都返回了相同的内容。
关于如何让我的代码在后台运行并且能够在日志中看到它没有在主线程中运行的任何指针?
答案 0 :(得分:1)
我的猜测是你必须用setThreadPriority
指定线程优先级的类型。请尝试如下:
new Thread(new Runnable() {
public void run() {
// moves the current Thread into the background
android.os.Process.setThreadPriority(
android.os.Process.THREAD_PRIORITY_BACKGROUND);
// doing some work in the background here
Log.d(tag, "Thread: " + checkThread());
}
}).start();
这应该是返回background
。