2023/5/25每日随笔

Posted JIANGzihao0222

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2023/5/25每日随笔相关的知识,希望对你有一定的参考价值。

     今天,一天而没上课,因为就一节课体育课,然后下雨没上,学了一天的数据库,学了关系模型,约束条件,完整性,还有建表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);



 

每日随笔4.7

今天上了一天课,很累

以上是关于2023/5/25每日随笔的主要内容,如果未能解决你的问题,请参考以下文章

每日随笔3.26

每日随笔4.7

每日随笔4.13

2023/4/17每日随笔

每日随笔4.17

每日随笔4.18