码迷,mamicode.com
首页 > 移动开发 > 详细

Android --> Handler基本使用

时间:2021-05-24 05:06:21      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:没有   执行   exce   return   NPU   hat   rest   androi   工作   

Handler基本使用

public class MainActivity extends AppCompatActivity {
	/**
     * 这里的list如果不使用handler,由于是网络资源,加载需要时  间,	在当我们进行加载ui是
     * 很可能list为空,或者没有全部加载完成
     */
    private List<Bitmap> list2 = new ArrayList<>();
    Handler handler;
    @SuppressLint("HandlerLeak")
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        final ViewFlipper root = findViewById(R.id.test_view);
        //在主线程里添加handler实例
        handler = new Handler(){//匿名实现类
            @Override
            public void handleMessage(Message msg) {
                super.handleMessage(msg);
                if (msg.what == 1) {//加载完成
                    //更新ui
                    for (Bitmap bitmap : list2) {
                        ImageView view = new ImageView(MainActivity.this);
                        view.setImageBitmap(bitmap);
                        root.addView(view, list2.indexOf(bitmap));
                        System.out.println(root.getChildCount());
                    }
                }
            }
        };
        //2.加载网络
        new Thread(new Runnable() {
            //子线程发送Message给UI线程表示自己任务已经执行完成,主线程可以做相应的操作了。
            @Override
            public void run() {
                Bitmap bitmap1 = returnBitMap("http://129.211.190.120/restaurant/1.png");
                Bitmap bitmap2 = returnBitMap("http://129.211.190.120/restaurant/2.png");
                Bitmap bitmap3 = returnBitMap("http://129.211.190.120/restaurant/3.png");
                Bitmap bitmap4 = returnBitMap("http://129.211.190.120/restaurant/4.png");
                Bitmap bitmap5 = returnBitMap("http://129.211.190.120/restaurant/5.png");
                Bitmap bitmap6 = returnBitMap("http://129.211.190.120/restaurant/6.png");
                Bitmap bitmap7 = returnBitMap("http://129.211.190.120/restaurant/7.png");
                list2.add(bitmap1);
                list2.add(bitmap2);
                list2.add(bitmap3);
                list2.add(bitmap4);
                list2.add(bitmap5);
                list2.add(bitmap6);
                list2.add(bitmap7);
                //步骤3:创建所需的消息对象
                Message msg = Message.obtain();
                msg.what = 1; // 消息标识
                // 步骤4:在工作线程中 通过Handler发送消息到消息队列中
                //handler在发送消息时,message就持有了这个handler的引用
                handler.sendMessage(msg);
            }
        }).start();
    }
     //请求网络图片
    private Bitmap returnBitMap(String url) {

        Bitmap bitmap = null;
        try {
            URL myFileUrl = new URL(url);
            HttpURLConnection conn = (HttpURLConnection) myFileUrl.openConnection();
            conn.setDoInput(true);
            conn.connect();
            InputStream is = conn.getInputStream();
            bitmap = BitmapFactory.decodeStream(is);
            is.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return bitmap;
    }
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/activity_main"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">
    <ViewFlipper
            android:layout_width="300dp"
            android:layout_height="300dp"
            android:inAnimation="@android:anim/slide_in_left"
            android:outAnimation="@android:anim/slide_out_right"
            android:flipInterval="2000"
            android:autoStart="true"
            android:layout_gravity="center"
            android:id="@+id/test_view">
    </ViewFlipper>
</LinearLayout>

Android --> Handler基本使用

标签:没有   执行   exce   return   NPU   hat   rest   androi   工作   

原文地址:https://www.cnblogs.com/sowhappy/p/14753800.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!