Android中的线程示例


Answers:


88

8
前两个链接不起作用。.对于第一个链接,请尝试链接 对于第二个链接,请尝试链接
Dexter 2012年

5
答案接近1.5岁。我尝试更新链接。
RoflcoptrException 2012年

您真的很高兴回答这样一个不明确的问题
一个人

我不同意这是一个非特定性的问题:它要求社区提供非常特定类型的示例,并且具有非常特定的重点。
WillC

10

Android的强大功能之一是AsyncTask类。

要使用它,您必须首先扩展它并覆盖doInBackground(...)。 doInBackground在工作线程自动执行,并且可以在UI线程添加一些听众收到通知的状态更新,这些功能被称为:onPreExecute()onPostExecute()onProgressUpdate()

您可以在此处找到示例。

请参阅以下帖子以了解其他替代方法:

处理程序与AsyncTask与线程


..我相当确定您的链接已死。
While-E

@ While-E恐怕您是对的
Endian Ogino

2
我刚刚更新了链接。博客已移至新位置:链接
slybloty 2011年

8

这是一个简单的Android线程示例。这是非常基本的方法,但它应该可以帮助您了解情况。

Android代码-Main.java

package test12.tt;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class Test12Activity extends Activity {

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        final TextView txt1 = (TextView) findViewById(R.id.sm);

        new Thread(new Runnable() { 
            public void run(){        
            txt1.setText("Thread!!");
            }
        }).start();

    }    
}

Android应用程序xml-main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <TextView  
    android:id = "@+id/sm"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"/>

</LinearLayout>

49
在我看来,这似乎是一个不正确的示例,因为UI更新是通过后台线程完成的。
Frank Harper '02

1
如果您要更新ui线程,则应使用处理程序,因为它是ui线程和生成线程之间的中间层,这样您就
可以避免死锁

2
developer.android.com/guide/components/…完全不鼓励此类编程,因为它违反了“请勿从UI线程外部访问Android UI工具包”规则
SerkanArıkuşu2013年

1
我敢肯定,在最新版本的Android中,有时甚至无法正常运行。
Giszmo 2015年

1
它违反了单线程模型的第二条规则:请勿从UI线程外部访问Android UI工具包
ThePatelGuy
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.