在后台运行代码并验证线程

时间:2016-12-27 16:33:14

标签: android multithreading

我已经花了好几个小时才想出这个,并尝试了各种技术,但似乎无法在后台运行任务。我在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”。我已经尝试了HandlerAsyncTask等等,但所有这些都返回了相同的内容。

关于如何让我的代码在后台运行并且能够在日志中看到它没有在主线程中运行的任何指针?

1 个答案:

答案 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