Android开发系列——实战篇11:多线程与异步机制

本文深入探讨Android应用中的多线程机制,重点讲解主线程与子线程的区别,以及如何利用Handler进行UI线程与非UI线程间的通信。通过实例展示了在主线程中禁止网络请求,以及如何通过Handler的post请求实现图片轮播功能。
摘要由CSDN通过智能技术生成

本文介绍安卓的多线程与异步任务处理的机制

一、多线程

1.主线程与子线程

每个 Android 应用都有一个主线程,负责处理界面(包括测量和绘制视图)、协调用户互动以及接收生命周期事件。

主线程一般被用于操作UI界面,与用户进行交互,所以也被称为UI线程。

与此相对的,在一些耗时比较久的任务处理中,比如从网络上下载资源、进行后台服务等,这些是用户看不到的地方。我们不能直接将这些任务放在主线程中进行处理,不然会耗费大量资源并且出现错误,降低用户体验。

所以一般遇到这些任务,需要在主线程之外重新开一个子线程进行任务处理,也就是所谓的非UI线程。

:子线程(非UI线程)里的操作是不能直接对UI界面进行更新的。

通过一个从网络上下载图片的案例来理解主线程与子线程。

主要逻辑:在界面上创建一个Button按钮,点击后从网络上下载一幅图片。

主要步骤:
1.在布局文件中创建按钮和图片视图,给按钮添加事件。
2.在Java文件中编写事件处理逻辑。
3.在AndroidManifest清单文件中添加网络权限。

activity_main.xml文件

 <Button
        android:id="@+id/bt1"
        adnroid:onClick="download"
        android:layout_width="128dp"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_alignParentEnd="true"
        android:layout_marginStart="134dp"
        android:layout_marginTop="100dp"
        android:layout_marginEnd="134dp"
        android:text="Download" />

 <ImageView
        android:id="@+id/image"
        android:layout_width="300dp"
        android:layout_height="200dp"
        android:layout_centerInParent="true"
        android:background="@color/colorAccent" />

效果:

Java类文件

package com.example.handler;

import androidx.appcompat.app.AppCompatActivity;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;

import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

public class MainActivity extends AppCompatActivity {
   

    //实例化ImageView对象
    ImageView mimageView;

    @Override
    protected void onCreate(Bundle savedInstanceState) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值