Android UI线程的标识符

时间:2013-04-12 00:35:06

标签: android android-ui

当我在Android平台上编写代码时,我经常必须小心UI操作,这只能在UI Thread中完成,我清楚地知道,并且我知道为什么GUI使用单线程来操作UI小部件,以防万一多线程同时操作。但我想知道android系统如何区分UI线程和我们自己的非UI线程。UI线程有标识符吗?

3 个答案:

答案 0 :(得分:2)

如果您想知道自己是否在UI线程中,可以执行以下操作:

if("main".equals(Thread.currentThread().getName())) {}

所以,回答你的问题,是的,UI线程确实有一个标识符:“main”。

答案 1 :(得分:0)

您从MainActivity调用的任何进程都在UI线程上运行。如果您不希望在UI线程上运行某些内容,则在AsyncTask或后台线程中启动它。这样可以防止它阻止用户界面,这样用户仍然可以与您的应用进行互动。

答案 2 :(得分:0)

此信息由Android框架保存,可以在同一个网站上进行调查。

但是,在开发应用程序时,最佳做法是避免判断或逆向设计框架内部工作并调整应用程序。相反,你应该看看你的要求并找到一种方法来达到它。

在您的情况下,显然您需要在GUI线程上执行一段代码。为此,您不需要将您的线程作为GUI线程。您可以通过以下方式之一完成此操作:

  1. 使用Runnables并将代码发布到主要活动,例如;

    myActivity.post(new Runnable(){

    @override
    public void run(){
        // your code to be run on GUI thread
    }
    

    )};

  2. 如果无法访问活动,那么您可以找到应用程序的主要处理程序并发布到它。喜欢的东西;

    处理程序appHandler = new Handler(context.getMainLooper()); appHandler.post(new Runnable(....

  3. 您可以使用runOnUIThread()

  4. http://developer.android.com/reference/android/app/Activity.html#runOnUiThread%28java.lang.Runnable%29