Android中的多线程

多线程

多线程的引入

  • Android用户界面是与用户交互的接口 ,对于用户的操作,Android迅速响应用户输入 是一个重要目标。

  • 如果Activity中的应用程序在5s之内未作出响应 ,可能会出现“应用程序无响应,是否关闭”的对话框

  • 如果用户界面长时间对用户的操作未作出响应,这样的应用程序将会被淘汰。

  • 对于后台下载、异步加载图片等这类耗时较多的工作,一般使用多线程的方法来解决。

模拟耗时任务

在这里我们用了两个按钮,使用相对分布一定要说明位置关系,否则会发生覆盖 ,一个按钮用来下载网络上的资源到本地,一个用来检测在下载的过程中,其他按钮是否可以正常使用

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="vertical">

    <Button
        android:id="@+id/btn_download"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="下载图片"/>

    <Button
        android:id="@+id/btn_check"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="检测"
        android:layout_below="@+id/btn_download"/>


</RelativeLayout>
package net.onest.handlerpractice;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

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

public class MainActivity extends AppCompatActivity {
   
    private Button btnDownLoad;
    private Button btnCheck;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
   
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //方法:获得控件
        findViews();

        //给控件安装点击事件监听器
        btnDownLoad.setOnClickListener(new View.OnClickListener() {
   
            @Override
            public void onClick(View v) {
   

                try {
   
                    //下载图片
                    downLOadPicture();
                } catch (MalformedURLException e) {
   
                    e.printStackTrace();
                } catch (IOException e) {
   
                    e.printStackTrace();
                }
            }
        });

        btnCheck.setOnClickListener(new View.OnClickListener() {
   
            @Override
            public void onClick(View v) {
   
                //由Toast提示消息
                showToast();
            }
        });
    }


    //自定义的方法:下载图片
    private void downLOadPicture() throws IOException {
   
        URL url = new URL("https://image.baidu.com/search/detail?ct=503316480&z=0&tn=baiduimagedetail&ipn=d&cl=2&cm=1&sc=0&lm=-1&ie=gb18030&pn=4&rn=1&di=175120&ln=30&word=%B5%CF%C0%F6%C8%C8%B0%CD&os=3902488331,843254049&cs=3455184204,2524748306&objurl=http%3A%2F%2Fn.sinaimg.cn%2Ffront%2F342%2Fw700h442%2F20190321%2FxqrY-huqrnan7527352.jpg&bdtype=0&simid=4228985784,624304665&pi=0&adpicid=0&timingneed=0&spn=0&is=0,0&fr=ala&ala=1&alatpl=adress&pos=1&oriquery=%E8%BF%AA%E4%B8%BD%E7%83%AD%E5%B7%B4&hs=2&xthttps=000000");
        URLConnection con = url.openConnection()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值