wordpress适应式网站博客模板,网站搜索工具,网站开发跟app开发的差别,厦门seo推广外包1、定义一个线程只需要新建一个类继承自Thread。然后重写run()方法#xff0c;并在里面编写耗时逻辑即可#xff1a; class MyThread extends Thread{public void run(){//处理具体的逻辑#xff5d;#xff5d; 启动的时候只需要new出MyThread的实例#xff0c;然后调用它… 1、定义一个线程只需要新建一个类继承自Thread。然后重写run()方法并在里面编写耗时逻辑即可 class MyThread extends Thread{public void run(){//处理具体的逻辑启动的时候只需要new出MyThread的实例然后调用它的start()方法这样run()中写的代码就会在子线程中进行 new Mythread().start(); 2、更多时候使用实现Runnable接口的方式来定义一个线程 class MyThread implements Runnable {public void run() //处理具体的逻辑 如果使用了这种写法启动线程的方法也要进行相应的改变 MyThread mythread new MyThread();
new Thread(mythread).start(); Thread的构造函数接收了一个Runnable参数MyThread正是一个实现了Runnable接口的对象所以直接将它传入Thread的构造函数里紧接着调用start()方法run()中的代码就会在子线程中运行了。 3、如果不想专门再定义一个类去实现Runnable接口也可以使用匿名类的方式 new Thread (new Runnable() {public void run() //处理具体的逻辑 ).start(); 例如在子线程中更新UI android的UI是线程不安全的也就是说如果想要更新应用程序里的UI元素就必须要在主线程中进行否则就会出现意外。 验证一下就是先在布局中加入一个按钮和一个文本控件 1 RelativeLayout xmlns:androidhttp://schemas.android.com/apk/res/android2 android:layout_widthmatch_parent3 android:layout_heightmatch_parent4 5 6 Button7 android:idid/chage_text8 android:layout_widthmatch_parent9 android:layout_heightwrap_content
10 android:text改变文字 /
11
12 TextView
13 android:idid/textView
14 android:layout_widthwrap_content
15 android:layout_heightwrap_content
16 android:layout_centerInParenttrue
17 android:text这是一段文字
18 android:textSize20sp/
19 /RelativeLayout 然后是java代码 1 public class MainActivity extends AppCompatActivity {2 Override3 protected void onCreate(Bundle savedInstanceState) {4 super.onCreate(savedInstanceState);5 setContentView(R.layout.activity_main);6 7 //注册按钮和文本控件8 Button changeText (Button) findViewById(R.id.chage_text);9 final TextView textView (TextView) findViewById(R.id.textView);
10
11 //按钮响应
12 changeText.setOnClickListener(new View.OnClickListener() {
13 Override
14 public void onClick(View view) {
15
16 //开启一个子线程
17 new Thread(new Runnable() {
18 Override
19 public void run() {
20
21 //修改文本控件中的文本
22 textView.setText(这是另一段文字);
23 }
24 }).start();
25 }
26 });
27 }
28 } 然后安装到手机上然后就崩溃了前面就说过要改变UI就需要在主线程中去改变。这时候就需要使用一套异步消息处理机制也就是子线程中发送消息给Handler然后Handler识别消息再去进行相应的操作。 1 public class MainActivity extends AppCompatActivity {2 3 public static final int UPDATA_TEXT 1;4 5 private TextView textView;6 7 private Handler handler new Handler(){8 9 public void handleMessage(Message msg){
10 switch (msg.what){
11 case UPDATA_TEXT:
12 textView.setText(这是另一段文字);
13 break;
14 default:
15 break;
16 }
17 }
18 };
19 Override
20 protected void onCreate(Bundle savedInstanceState) {
21 super.onCreate(savedInstanceState);
22 setContentView(R.layout.activity_main);
23
24 //注册按钮和文本控件
25 Button changeText (Button) findViewById(R.id.chage_text);
26 textView (TextView) findViewById(R.id.textView);
27
28 //按钮响应
29 changeText.setOnClickListener(new View.OnClickListener() {
30 Override
31 public void onClick(View view) {
32
33 //开启一个子线程
34 new Thread(new Runnable() {
35 Override
36 public void run() {
37 Message message new Message();
38 message.what UPDATA_TEXT;
39 handler.sendMessage(message);//将Message对象发送出去
40 }
41 }).start();
42 }
43 });
44 }
45 } 先创建一个Handler对象并重写handleMessage方法用于对具体Message的处理在这里对UI进行改变然后在子线程中创建一个Message对象将Message的what字段指定为提取设置好的值然后调用handler的sendMessage()方法发送出去。 转载于:https://www.cnblogs.com/xxbbtt/p/7467078.html