当前位置: 首页 > news >正文

关于美术馆网站建设的方案怎样在别人网站做加强链接

关于美术馆网站建设的方案,怎样在别人网站做加强链接,松江做网站价格,建e室内设计网 3d模型医美前台总结4个关键概念 1、MessageQueue#xff1a;是一种数据结构#xff0c;见名知义#xff0c;就是一个消息队列#xff0c;存放消息的地方。每一个线程最多只可以拥有一个MessageQueue数据结构。 创建一个线程的时候#xff0c;并不会自动创建其MessageQueue。通常使用一个… 总结4个关键概念  1、MessageQueue是一种数据结构见名知义就是一个消息队列存放消息的地方。每一个线程最多只可以拥有一个MessageQueue数据结构。 创建一个线程的时候并不会自动创建其MessageQueue。通常使用一个Looper对象对该线程的MessageQueue进行管理。主线程创建时会创建一 个默认的Looper对象而Looper对象的创建将自动创建一个Message Queue。其他非主线程不会自动创建Looper要需要的时候通过调 用prepare函数来实现。 2、Message消息对象Message Queue中的存放的对象。一个Message Queue中包含多个Message。 Message实例对象的取得通常使用Message类里的静态方法obtain(),该方法有多个重载版本可供选择它的创建并不一定是直接创建一个新的实例 而是先从Message Pool(消息池)中看有没有可用的Message实例存在则直接取出返回这个实例。如果Message Pool中没有可用的Message实例 则才用给定的参数创建一个Message对象。调用removeMessages()时将Message从Message Queue中删除同时放入到Message Pool中。除了上面这 种方式也可以通过Handler对象的obtainMessage()获取一个Message实例。 3、Looper 是MessageQueue的管理者。每一个MessageQueue都不能脱离Looper而存在Looper对象的创建是通过prepare函数来实现的。同时每一个Looper对象 和一个线程关联。通过调用Looper.myLooper()可以获得当前线程的Looper对象 创建一个Looper对象时会同时创建一个MessageQueue对象。除了主线程有默认的Looper其他线程默认是没有MessageQueue对象的所以不能 接受Message。如需要接受自己定义一个Looper对象(通过prepare函数),这样该线程就有了自己的Looper对象和MessageQueue数据结构了。 Looper从MessageQueue中取出Message然后交由Handler的handleMessage进行处理。处理完成后调用Message.recycle()将其放入Message Pool中。4、Handler 消息的处理者handler负责将需要传递的信息封装成Message通过调用handler对象的obtainMessage()来实现 将消息传递给MessageQueue这是通过handler对象的sendMessage()来实现的。当Looper对象看到MessageQueue中含有Message就将其广播出去。该handler对象收到该消息后调用相应的handler对象的handleMessage()方法 对其进行处理。二、线程之间的消息如何进行传递 1、主线程给自己发送Message  public class MainActivity extends Activity {            private Button btnTest;            private TextView textView;            private Handler handler;            Override            public void onCreate(Bundle savedInstanceState) {                    super.onCreate(savedInstanceState);                    setContentView(R.layout.main);                    btnTest (Button)this.findViewById(R.id.btn_01);                    textView (TextView)this.findViewById(R.id.view_01);                    btnTest.setOnClickListener(new View.OnClickListener() {                            Override                            public void onClick(View arg0) {                                    Looper looper Looper.getMainLooper(); //主线程的Looper对象                                    //这里以主线程的Looper对象创建了handler                                    //所以这个handler发送的Message会被传递给主线程的MessageQueue。                                    handler new MyHandler(looper);                                    handler.removeMessages(0);                                    //构建Message对象                                    //第一个参数是自己指定的message代号方便在handler选择性地接收                                    //第二三个参数没有什么意义                                    //第四个参数需要封装的对象                                    Message msg handler.obtainMessage(1,1,1,主线程发消息了);                                    handler.sendMessage(msg); //发送消息                            }                    });            }            class MyHandler extends Handler{                    public MyHandler(Looper looper){                            super(looper);                    }                    public void handleMessage(Message msg){                            super.handleMessage(msg);                            textView.setText(我是主线程的Handler收到了消息(String)msg.obj);                    }            }    }     2、其他线程给主线程发送Message   public class MainActivity extends Activity {            private Button btnTest;            private TextView textView;            private Handler handler;            Override            public void onCreate(Bundle savedInstanceState) {                    super.onCreate(savedInstanceState);                    setContentView(R.layout.main);                    btnTest (Button)this.findViewById(R.id.btn_01);                    textView (TextView)this.findViewById(R.id.view_01);                    btnTest.setOnClickListener(new View.OnClickListener() {                            Override                            public void onClick(View arg0) {                                    //可以看出这里启动了一个线程来操作消息的封装和发送的工作                                    //这样原来主线程的发送就变成了其他线程的发送简单吧呵呵                                    new MyThread().start();                                    }                    });            }            class MyHandler extends Handler{                    public MyHandler(Looper looper){                            super(looper);                    }                    public void handleMessage(Message msg){                            super.handleMessage(msg);                            textView.setText(我是主线程的Handler收到了消息(String)msg.obj);                    }            }            //加了一个线程类            class MyThread extends Thread{                    public void run(){                            Looper looper Looper.getMainLooper(); //主线程的Looper对象                            //这里以主线程的Looper对象创建了handler                            //所以这个handler发送的Message会被传递给主线程的MessageQueue。                            handler new MyHandler(looper);                            //构建Message对象                            //第一个参数是自己指定的message代号方便在handler选择性地接收                            //第二三个参数没有什么意义                            //第四个参数需要封装的对象                            Message msg handler.obtainMessage(1,1,1,其他线程发消息了);                            handler.sendMessage(msg); //发送消息                                            }            }    }    3、主线程给其他线程发送Message   public class MainActivity extends Activity {            private Button btnTest;            private TextView textView;            private Handler handler;            Override            public void onCreate(Bundle savedInstanceState) {                    super.onCreate(savedInstanceState);                    setContentView(R.layout.main);                    btnTest (Button)this.findViewById(R.id.btn_01);                    textView (TextView)this.findViewById(R.id.view_01);                    //启动线程                    new MyThread().start();                            btnTest.setOnClickListener(new View.OnClickListener() {                            Override                            public void onClick(View arg0) {                                    //这里handler的实例化在线程中                                    //线程启动的时候就已经实例化了                                    Message msg handler.obtainMessage(1,1,1,主线程发送的消息);                                    handler.sendMessage(msg);                            }                    });            }            class MyHandler extends Handler{                    public MyHandler(Looper looper){                            super(looper);                    }                    public void handleMessage(Message msg){                            super.handleMessage(msg);                            textView.setText(我是主线程的Handler收到了消息(String)msg.obj);                    }            }            class MyThread extends Thread{                    public void run(){                            Looper.prepare(); //创建该线程的Looper对象用于接收消息                            //注意了这里的handler是定义在主线程中的哦呵呵                            //前面看到直接使用了handler对象是不是在找在什么地方实例化的呢                            //现在看到了吧呵呵开始的时候实例化不了因为该线程的Looper对象                            //还不存在呢。现在可以实例化了                            //这里Looper.myLooper()获得的就是该线程的Looper对象了                            handler new ThreadHandler(Looper.myLooper());                            //这个方法有疑惑吗                            //其实就是一个循环循环从MessageQueue中取消息。                            //不经常去看看你怎么知道你有新消息呢                            Looper.loop();                     }                    //定义线程类中的消息处理类                    class ThreadHandler extends Handler{                            public ThreadHandler(Looper looper){                                    super(looper);                            }                            public void handleMessage(Message msg){                                    //这里对该线程中的MessageQueue中的Message进行处理                                    //这里我们再返回给主线程一个消息                                    handler new MyHandler(Looper.getMainLooper());                                    Message msg2 handler.obtainMessage(1,1,1,子线程收到:(String)msg.obj);                                    handler.sendMessage(msg2);                            }                    }            }    } 4、其他线程给自己发送Message    public class MainActivity extends Activity {            private Button btnTest;            private TextView textView;            private Handler handler;            Override            public void onCreate(Bundle savedInstanceState) {                    super.onCreate(savedInstanceState);                    setContentView(R.layout.main);                    btnTest (Button)this.findViewById(R.id.btn_01);                    textView (TextView)this.findViewById(R.id.view_01);                    btnTest.setOnClickListener(new View.OnClickListener() {                            Override                            public void onClick(View arg0) {                                    //启动线程                                    new MyThread().start();                                    }                    });            }            class MyHandler extends Handler{                    public MyHandler(Looper looper){                            super(looper);                    }                    public void handleMessage(Message msg){                            super.handleMessage(msg);                            textView.setText((String)msg.obj);                    }            }                    class MyThread extends Thread{                    public void run(){                            Looper.prepare(); //创建该线程的Looper对象                            //这里Looper.myLooper()获得的就是该线程的Looper对象了                            handler new ThreadHandler(Looper.myLooper());                            Message msg handler.obtainMessage(1,1,1,我自己);                            handler.sendMessage(msg);                            Looper.loop();                     }                    //定义线程类中的消息处理类                    class ThreadHandler extends Handler{                            public ThreadHandler(Looper looper){                                    super(looper);                            }                            public void handleMessage(Message msg){                                    //这里对该线程中的MessageQueue中的Message进行处理                                    //这里我们再返回给主线程一个消息                                    //加入判断看看是不是该线程自己发的信息                                    if(msg.what 1 msg.obj.equals(我自己)){                                            handler new MyHandler(Looper.getMainLooper());                                            Message msg2 handler.obtainMessage(1,1,1,禀告主线程:我收到了自己发给自己的Message);                                            handler.sendMessage(msg2);                                                                    }                            }                    }            }    }    附注 上面四个例子的布局文件是同一个文件main.xml  ?xml:namespace prefix o ns urn:schemas-microsoft-com:office:office / ?xml version1.0 encodingutf-8?    LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/android            android:rientationvertical            android:layout_widthfill_parent            android:layout_heightfill_parent                TextView    android:idid/view_01            android:layout_widthfill_parent             android:layout_heightwrap_content             android:textstring/hello            /    Button android:idid/btn_01             android:layout_widthfill_parent             android:layout_heightwrap_content             android:text测试消息 /    /LinearLayout 转载于:https://blog.51cto.com/haiyuanxi/957206
http://www.yutouwan.com/news/291020/

相关文章:

  • 苏州响应式网站建设特效比漂亮的网站
  • 如何制作一个公司网站抖音代运营怎么解绑
  • 评析网站建设报价单wordpress下载主题错误
  • 江门阿里巴巴网站建设如何登录百度站长平台
  • 网站建设基本流程ppt基于php技术的小型企业网站开发
  • 自建网站的优缺点中国建设银行青岛网站
  • 网站模板制作工具wordpress如何关闭标签功能
  • 北京兼职网站建设网站的优化方法
  • 会员管理系统多少钱温州网站优化定制
  • 网站优化升级网页设计与制作项目
  • 网站默认极速模式电脑平面设计软件
  • 免费建站还用学做网站吗网站建设培训基地
  • 专业制作网站 地摊陕西省建设工程施工许可证查询网站
  • 织梦做双语网站wordpress提高浏览量
  • 免费crm网站下载的软件wordpress公共聊天室
  • 餐饮网站开发性能需求买外链
  • 商城网站建设高端产品网络推广的方法有哪些
  • 贵州省住房和城乡建设厅网站(广州网站优化排名
  • 扁平化高端网站模板长沙网站建设
  • 西安工程建设信息网站直播视频软件哪个好
  • 广州市民政局网站建设公众号开发难吗
  • 网站的作用wordpress 倡萌 相册
  • 小说网站开发环境那个号企业网站建设费用账务处理
  • 如何识别一个网站是否做的好坏软件开发就业前景好吗
  • wordpress网站结构叮当快药网上商城
  • 网站建议反馈应该怎么做系统网站主题有哪些问题
  • 服务好的扬中网站优化郴州网站优化
  • 建材企业网站营销怎么做山西网络科技有限公司
  • 建站wordpress做网站1天转多钱
  • 关于数据库的网站开发沈阳网官网