• Android UI主线程与子线程


      一个Android 程序默认情况只有一个进程,但是一个进程可以有多个线程。其中有一个UI 线程也称为UI主线程,UI Thread在Android程序运行的时候就被创建,主要是负责控制UI界面的显示、更新和控件交互。所有的Android应用程序组件----包括Activity、Service、Broadcast Receiver都在应用程序的主线程中运行。因此,任何组件中的费时操作处理都可能阻塞所有其他的组件、包括Service和可见的Activity。

      在Android 中,对未响应的定义是:Activity对一个输入事件在5s内没有响应,或者Broadcast Receiver在10s内没有完成他的onReceive处理程序。对于任何不用直接和用户界面进行交互的重要处理,使用后台线程技术处理是非常重要的,将文件操作、网络交互、数据库、复杂计算调度到后台线程中完成非常重要,以免阻塞主线程。

    方法一:Thread+Handler

    开启一个新线程:new Thread(new MyThread()).start();

    //通过Handler物件,通知主线程UI Thread来更新界面
        Handler myHandler=new Handler(){
            //此方法主要用于更新UI
            public void handleMessage(Message msg){
                switch(msg.what){
                    //根据Thread返回的标识进行相应的处理
                }
            }
        };
        
        class MyThread implements Runnable{
            public void run(){
                int what=0;
                //将耗时操作放到这里处理
                
                //to-do
                
                //将标识发给Handler
                myHandler.obtainMessage(what).sendToTarget();
            }
        }

    方法二:使用AsyncTask运行异步线程。

      AsyncTask为将耗时操作移到后台线程并在操作完成后同步更新UI线程实现了最佳实践模式。他有助于将事件处理程序与GUI线程进行同步,允许通过更新视图和其他UI元素来报告进度或者在任务完成后发布结果。

      要创建一个新的异步任务,需要扩展AsyncTask类,指定要使用的参数类型:

    public class MyAsyncTask extends AsyncTask {
    
        @Override
        protected Object doInBackground(Object... arg0) {
            // TODO Auto-generated method stub
            
            //将耗时操作放到此方法中来处理
            return null;
        }
    
        @Override
        protected void onPostExecute(Object result) {
            // TODO Auto-generated method stub
            
            //更新UI,起到了handler的作用
        }
        
    }

    运行异步任务:

    new MyAsyncTask().execute();

  • 相关阅读:
    csuoj 1355: 地雷清除计划
    Task 6.4 冲刺Two之站立会议3
    Task 10 统计从1到某个整数之间出现的1的次数
    Task 6.3 冲刺Two之站立会议2
    Task 9 从用户界面和体验分析“360极速浏览器”
    Task 6.3 冲刺Two之站立会议1
    《程序员开发心理学》阅读笔记一
    Task 6.2冲刺会议十 /2015-5-23
    Task 6.2冲刺会议九 /2015-5-22
    Task 6.2冲刺会议八 /2015-5-21
  • 原文地址:https://www.cnblogs.com/yshyee/p/3367643.html
Copyright © 2020-2023  润新知