不确定它是否在自己的线程上运行

时间:2014-08-22 19:34:11

标签: android android-service

我不确定我的服务是否在自己的线程上运行。

我在我的服务中使用onCreate方法执行此操作:

@Override
public void onCreate() {
    HandlerThread thread = new HandlerThread("ServiceStartArguments");
    thread.start();
}

我可以看到调试时创建的线程,但我仍然不确定,因为我看到人们会这样做:

handler=new Handler();
Runnable r=new Runnable()
{
   public void run() 
   {
       tv.append("Hello World");            
   }
};
handler.postDelayed(r, 1000);

怎么样,为什么?请解释一下,我不明白!

这让我感到困惑..

I/Choreographer﹕ Skipped 52 frames!  The application may be doing too much work on its main thread.

2 个答案:

答案 0 :(得分:2)

在HandlerThread的run()方法中执行的任何操作都在您使用onCreate()中的thread.start()开始的线程上运行。默认情况下,服务中的任何其他内容都在UI线程上运行(除非您使用的是IntentService,否则onHandleIntent()会自动在非UI线程中运行。)

您发布的模式可能演示了如何从不同的线程更新UI线程上的UI。

答案 1 :(得分:1)

使用此选项检查主题的ID:

long myThreadId = Thread.currentThread().getId();
Log.d("thread debuging", "Thread id is: " + myThreadId);

或者您也可以使用这些来设置线程的名称:

Thread.currentThread().setName("A_NAME_FOR_THIS_THREAD");
String threadName = Thread.currentThread().getName();