有点乱 随便记了点
android:orientation="vertical" 设置垂直排列
horizontal 水平排列 ,这是默认
layout_gravity:是LineaLayout的属性,是用于指定控件在布局中的对齐方式
HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。
一个HTTP"客户端"是一个应用程序(Web浏览器或其他任何客户端),通过连接到服务器达到向服务器发送一个或多个HTTP的请求的目的。
//广播
使用LocalBroadCastManager对本地广播管理
SharedPreferences 的get方法 两个参数,1.键 2.当键不存在时的默认返回值
服务不会自动开启线程,默认运行在主线程,需要在服务的内手动创建子线程, 在子线程执行具体的任务,否则主线程可能被阻塞.
example: 使用匿名类创建子线程
new Thread(new Runnable() {
@Override
public void run() {
}
}).start();
安卓多线程简述: 执行一些比较耗时的操作,比如发送网络请求.服务器未必立即响应请求,需要将这些操作放在子线程中去运行,否则可能阻塞主线程, 不能在子线程中操作UI,更新UI的操作只能在主线程。
消息队列*MessageQue用来存放Handler 发送的消息,每个线程只会有一个消息队列对象
Handler不仅发送消息(sendMessage),还处理消息(handleMessage)
关于服务抽象类Service:
Service类只有一个抽象方法onBind.子类必须实现它
启动/停止服务:startService()/stopService
活动通过Binder对象管理Service
使用前台服务使其不会因内存不足而被回收,前台服务的关键api: startForeground()
getInputStream()获取的服务器返回的输入流
安卓通过内容提供器 * Content Provider实现不同应用程序之间数据共享
Android studio中调出快捷键,快速try catch包括代码块 ,选择要包裹的代码块,然后按下ctrl + alt + t
网络七层: 物理层,数据链路层,网络层,传输层(TCP),会话层,表示层,应用层(Http)
Socket 服务端
Step 1:创建ServerSocket对象,绑定监听的端口
Step 2:调用accept()方法监听客户端的请求
Step 3:连接建立后,通过输入流读取客户端发送的请求信息
Step 4:通过输出流向客户端发送响应信息
Step 5:关闭相关资源
Socket 客户端
Step 1:创建Socket对象,指明需要链接的服务器的地址和端号
Step 2:链接建立后,通过输出流向服务器发送请求信息
Step 3:通过输出流获取服务器响应的信息
Step 4:关闭相关资源