Android 不确定它是否在自己的线程上运行
我不确定我的服务是否在自己的线程上运行 我在我的服务中的onCreate方法中执行此操作:Android 不确定它是否在自己的线程上运行,android,android-service,Android,Android Service,我不确定我的服务是否在自己的线程上运行 我在我的服务中的onCreate方法中执行此操作: @Override public void onCreate() { HandlerThread thread = new HandlerThread("ServiceStartArguments"); thread.start(); } 我可以在调试时看到正在创建的线程,但我仍然不确定,因为我看到人们会这样做: handler=new Handler(); Runnable r=new
@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.
HandlerThread的run()方法中执行的任何操作都是在onCreate()中以thread.start()开头的线程上运行的。默认情况下,服务中的任何其他内容都在UI线程上运行(除非您使用的是IntentService,否则onHandleIntent()将自动在非UI线程中运行)
您发布的模式可能正在演示如何从不同的线程更新UI线程上的UI。在HandlerThread的run()方法中执行的任何操作都将在onCreate()中的thread.start()开始的线程上运行。默认情况下,服务中的任何其他内容都在UI线程上运行(除非您使用的是IntentService,否则onHandleIntent()将自动在非UI线程中运行)
您发布的模式可能正在演示如何从不同的线程更新UI线程上的UI。在HandlerThread的run()方法中执行的任何操作都将在onCreate()中的thread.start()开始的线程上运行。默认情况下,服务中的任何其他内容都在UI线程上运行(除非您使用的是IntentService,否则onHandleIntent()将自动在非UI线程中运行)
您发布的模式可能正在演示如何从不同的线程更新UI线程上的UI。在HandlerThread的run()方法中执行的任何操作都将在onCreate()中的thread.start()开始的线程上运行。默认情况下,服务中的任何其他内容都在UI线程上运行(除非您使用的是IntentService,否则onHandleIntent()将自动在非UI线程中运行)
您发布的模式可能正在演示如何从其他线程更新UI线程上的UI。使用此模式检查线程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();
使用此选项检查线程的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();
使用此选项检查线程的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();
使用此选项检查线程的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();
您已经完成了第3步中的两个步骤,现在使用thread.getLooper()参数创建一个新的Handker OK,谢谢。我如何判断服务正在该线程上运行@pskinkservice始终在ui线程中运行(相同的线程活动在其上运行),但您可以生成一些其他线程以生成长后台作业。您已经完成了第3步中的两个步骤,现在使用thread.getLooper()参数创建一个新的Handker。谢谢。我如何判断服务正在该线程上运行@pskinkservice始终在ui线程中运行(相同的线程活动在其上运行),但您可以生成一些其他线程以生成长后台作业。您已经完成了第3步中的两个步骤,现在使用thread.getLooper()参数创建一个新的Handker。谢谢。我如何判断服务正在该线程上运行@pskinkservice始终在ui线程中运行(相同的线程活动在其上运行),但您可以生成一些其他线程以生成长后台作业。您已经完成了第3步中的两个步骤,现在使用thread.getLooper()参数创建一个新的Handker。谢谢。我如何判断服务正在该线程上运行@pskinkservice始终在ui线程中运行(相同的线程活动在其上运行),但您可以生成一些其他线程来生成长后台作业。因此,我必须在run()方法中放入像音乐播放器一样运行一段时间的代码,以便稍后将其与ui分离?Thread.start()只是线程的一个启动?Thread.start()启动一个新的执行线程,并在新线程上调用run()。因此,我以后必须在run()方法中放入像音乐播放器一样运行一段时间的代码,以将其与UI分离?Thread.start()只是线程的一个启动?Thread.start()启动一个新的执行线程,并在新线程上调用run()。因此,我以后必须在run()方法中放入像音乐播放器一样运行一段时间的代码,以将其与UI分离?Thread.start()只是线程的一个启动?Thread.start()启动一个新的执行线程,并在新线程上调用run()。因此,我以后必须在run()方法中放入像音乐播放器一样运行一段时间的代码,以将其与UI分离?Thread.start()只是线程的启动?Thread.start()启动一个新的执行线程,并在新线程上调用run()。