首页 > 其他分享 >2023/5/25每日随笔

2023/5/25每日随笔

时间:2023-05-25 23:45:40浏览次数:61  
标签:25 队列 Handler 线程 Looper 2023 随笔 public 消息

     今天,一天而没上课,因为就一节课体育课,然后下雨没上,学了一天的数据库,学了关系模型,约束条件,完整性,还有建表sql语句与查询sql语句,学到了很多,对项目界面进行简单优化。

对于软件的人机交互进行优化

l Handler 

通过Handler你可以发布或者处理一个消息或者是一个Runnable的实例。没个Handler都会与唯一的一个线程以及该线程的消息队列管理。当你创建一个新的Handler时候,默认情况下,它将关联到创建它的这个线程和该线程的消息队列。也就是说,假如你通过Handler发布消息的话,消息将只会发送到与它关联的这个消息队列,当然也只能处理该消息队列中的消息。 

主要的方法有: 

1)   public final boolean sendMessage(Message msg) 

把消息放入该Handler所关联的消息队列,放置在所有当前时间前未被处理的消息后。 

2)   public void handleMessage(Message msg) 

关联该消息队列的线程将通过调用Handler的handleMessage方法来接收和处理消息,通常需要子类化Handler来实现handleMessage。 

l Looper 

Looper扮演着一个Handler和消息队列之间通讯桥梁的角色。程序组件首先通过Handler把消息传送给Looper,Looper把消息放入队列。Looper也把消息队列里的消息广播给所有的Handler,Handler接受到消息后调用handleMessage进行处理。 

1)   可以通过Looper类的静态方法Looper.myLooper得到当前线程的Looper实例,假如当前线程未关联一个Looper实例,该方法将返回空。 

2)   可以通过静态方法Looper. getMainLooper方法得到主线程的Looper实例 

线程,消息队列,Handler,Looper之间的关系可以通过一个图来展现: 

private EditText editText;

private Handler messageHandler;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

editText = (EditText) findViewById(R.id.weather_city_edit);

Button button = (Button) findViewById(R.id.goQuery);

button.setOnClickListener(this);

//得到当前线程的Looper实例,由于当前线程是UI线程也可以通过Looper.getMainLooper()得到

Looper looper = Looper.myLooper();

//此处甚至可以不需要设置Looper,因为 Handler默认就使用当前线程的Looper

messageHandler = new MessageHandler(looper);

}


@Override

public void onClick(View v) {

//创建一个子线程去做耗时的网络连接工作

new Thread() {

@Override

public void run() {

//活动用户输入的城市名称

String city = editText.getText().toString();

//调用Google 天气API查询指定城市的当日天气情况

String weather = getWetherByCity(city);

//创建一个Message对象,并把得到的天气信息赋值给Message对象

Message message = Message.obtain();

message.obj = weather;

//通过Handler发布携带有天气情况的消息

messageHandler.sendMessage(message);

}

}.start();

}


//子类化一个Handler

class MessageHandler extends Handler {

public MessageHandler(Looper looper) {

super(looper);

}

@Override

public void handleMessage(Message msg) {

//处理收到的消息,把天气信息显示在title上

setTitle((String) msg.obj);

}

}

 

标签:25,队列,Handler,线程,Looper,2023,随笔,public,消息
From: https://www.cnblogs.com/JIANGzihao0222/p/17433330.html

相关文章

  • 2023.5.25
    测试代码:@TestpublicvoidtestIndexSearch()throwsException{//1.创建分词器(对搜索的关键词进行分词使用)//注意:分词器要和创建索引的时候使用的分词器一模一样Analyzeranalyzer=newStandardAnalyzer();//2.创建查......
  • 5.25 3.3
    一、问题 二、分析三、代码#include<iostream>usingnamespacestd;voidmain(){ longmul,number,k,a,b; cout<<"Itexistsfollowingautomorphicnmberssmallthan100000:"<<endl; for(number=0;number<100000;number++) { for(mul=number,k=1;(......
  • 2023.5.25 Linux系统Bash初识
    1.Linux系统终端概述2.Linux系统Bash管理2.1.Bash特性:命令补全2.2.Bash特性:命令快捷键2.3.Bash特性:命令别名2.4.Bash特性:命令流程2.5.Bash特性:路径展开2.6.Bash特性:转义字符2.7.Bash特性:获取帮助1.Linux系统终端概述服务器终端切换:Ctrl+Alt+F1…F6虚拟机终端切换:......
  • 2023.5.25
     1#include<iostream>2usingnamespacestd;3#include<cmath>4//2017final函数模板56classPoint7{8public:9//构造函数赋初值10Point(doublea,doubleb,doublec):m_x(a),m_y(b),m_z(c){}11//把重载函数声明为类的友元,可以......
  • 5.25
      程序流程图: #include<bits/stdc++.h>usingnamespacestd;main(){intx,y,z,num=0;printf("MenWomenChildren\n");for(x=0;x<=10;x++){y=20-2*x;z=30-x-y;if(3*x+2*y+z==50)......
  • 2023/5/25
    7-1用虚函数分别计算各种图形的面积分数 20全屏浏览题目作者 沙金单位 石家庄铁道大学定义抽象基类Shape,由它派生出五个派生类:Circle(圆形)、Square(正方形)、Rectangle(长方形)、Trapezoid(梯形)和Triangle(三角形),用虚函数分别计算各种图形的面积,并求出它......
  • Leetcode2585. 获得分数的方法数
    题解多重背包的模板f[i][j]表示前i种题目得分为j的方案数f[i][j]+=f[i-1][j-kw]再将空间优化为1维classSolution{publicintwaysToReachTarget(inttarget,int[][]types){intn=types.length,MOD=(int)1e9+7,INF=0x3f3f3f3f;int[......
  • 叮咚买菜业绩大幅低于预期,2023年前景堪忧
    叮咚买菜2023年第一季度业绩低于预期叮咚买菜(DDL)于5月12日公布了2023年第一季度财报。财报显示,叮咚买菜的收入同比下降了-8%,从2022年第一季度的54.44亿元人民币下滑到了2023年第一季度的49.98亿元人民币。根据S&PCapitalIQ的数据,叮咚买菜2023年第一季度的收入比卖方分析师预期......
  • 刘铭诚:5.25美元/黄金价格操作建议#期货原油今日走势交易策略
    黄金行情走势分析——周三黄金价格走势在美盘交易时间段从4小时上轨1985跌至下轨1956,跌幅近29个点,昨日完美把握交投区间,黄金空单获利满满!回归盘面上来看,今日白盘价格处于小时线区间震荡,目前的区间压缩至1968-1953,上下破位都可以顺势看行情延续。技术面黄金日线布林带下......
  • 2023-05-25:给定一个正整数 x,我们将会写出一个形如 x (op1) x (op2) x (op3) x ... 的
    2023-05-25:给定一个正整数x,我们将会写出一个形如x(op1)x(op2)x(op3)x...的表达式其中每个运算符op1,op2,…可以是加、减、乘、除之一例如,对于x=3,我们可以写出表达式3*3/3+3-3,该式的值为3在写这样的表达式时,我们需要遵守下面的惯例:除运算符(/)返回有理数任何地......