Android个人学习小结2016.12

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/forgot2015/article/details/54091688

仅个人学习小结,部分内容摘自网络,如有侵权,请联系删除,不便之处,敬请原谅

1、IntelliJ 快捷输入语句,如sout, fori, fbc,ifn ,更多的在Editor-Live Template中查看
2、windows技巧:鼠标选中,然后晃动当前窗口,系统会自动隐藏其他窗口,只保留当前一个
3、javaDoc注释常用:
@see @author @version @param @return @exception
@see 的句法有三种:
@see 类名
@see #方法名或属性名
@see 类名#方法名或属性名
4、社会工程学,为防止中招,要时刻持着怀疑的心,多一分理性,生活垃圾不要乱扔,注意销毁
5、在移动应用上进行的测试包括:

1. 性能测试: 执行测试客户端的应用程序性能,网络性能和服务器性能。
2. 功能测试: 这是根据需求检查应用程序功能的基本测试。
3. 内存测试: 与计算机相比,移动设备具有较小的内存,执行该测试以测试任何应用可优化的存储器使用。
4. 安装测试: 进行安装测试以检查包括卸载和更新的平滑与容易的安装过程。
5. 中断测试: 它用于检查由于短信或来电,低电量警告,低内存警告等引起的中断。
6. 可用性测试: 它用于检查应用程序的有效性,效率和满意度。

6、Failed to find style ‘editTextStyle’ in current theme解决办法
在xml布局窗口换一个theme
7、URL(Uniform Resource Locator) 地址用于描述一个网络上的资源, 基本格式如下
schema://host[:port#]/path/…/[?query-string][#anchor]
scheme 指定低层使用的协议(例如:http, https, ftp)
host HTTP服务器的IP地址或者域名
port# HTTP服务器的默认端口是80,这种情况下端口号可以省略。如果使用了别的端口,必须指明,例如 http://www.cnblogs.com:8080/
path 访问资源的路径
query-string 发送给http服务器的数据
anchor- 锚
URL 的一个例子
http://www.mywebsite.com/sj/test/test.aspx?name=sviergn&x=true#stuff
8、

  • GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码。

  • GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.aspx?name=test1&id=123456.
    POST方法是把提交的数据放在HTTP包的Body中.

  • GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制.

  • GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值,也就是说Get是通过地址栏来传值,而Post是通过提交表单来传值。

9、物理层(Physical layer):是参考模型的最低层。该层是网络通信的数据传输介质,由连接不同结点的电缆与设备共同构成。主要功能是:利用传输介质为数据链路层提供物理连接,负责处理数据传输并监控数据出错率,以便数据流的透明传输。
数据链路层(Data link layer):是参考模型的第2层。 主要功能是:在物理层提供的服务基础上,在通信的实体间建立数据链路连接,传输以“帧”为单位的数据包,并采用差错控制与流量控制方法,使有差错的物理线路变成无差错的数据链路。
网络层(Network layer):是参考模型的第3层。主要功能是:为数据在结点之间传输创建逻辑链路,通过路由选择算法为分组通过通信子网选择最适当的路径,以及实现拥塞控制、网络互联等功能。
传输层(Transport layer):是参考模型的第4层。主要功能是向用户提供可靠的端到端(End-to-End)服务,处理数据包错误、数据包次序,以及其他一些关键传输问题。传输层向高层屏蔽了下层数据通信的细节,因此,它是计算机通信体系结构中关键的一层。
会话层(Session layer):是参考模型的第5层。主要功能是:负责维扩两个结点之间的传输链接,以便确保点到点传输不中断,以及管理数据交换等功能。
表示层(Presentation layer):是参考模型的第6层。主要功能是:用于处理在两个通信系统中交换信息的表示方式,主要包括数据格式变换、数据加密与解密、数据压缩与恢复等功能。
应用层(Application layer):是参考模型的最高层。主要功能是:为应用软件提供了很多服务,例如文件服务器、数据库服务、电子邮件与其他网络软件服务。

10、fiddler raw乱码问题,点击顶部菜单中的Decode
11、ARP(Address Resolution Protocol,地址解析协议)是获取物理地址的一个TCP/IP协议
ARP欺骗可以导致目标计算机与网关通信失败;
更可怕的是会导致通信重定向,所有的数据都会通过攻击者的机器,因此存在极大的安全隐患。
ARP欺骗的3种基本方式:
- 主机C冒充网关欺骗主机B;
- 主机c冒充主机B欺骗网关;
- 主机C同时欺骗主机B和网关,实现数据中转,并监听到所有主机B的数据。

12、在现有的网络中,网络通讯的方式主要有两种:
TCP(传输控制协议)方式
UDP(用户数据报协议)方式
在网络通讯中,TCP方式就类似于拨打电话,使用该种方式进行网络通讯时,需要建立专门的虚拟连接,然后进行可靠的数据传输,如果数据发送失败,则客户端会自动重发该数据。而UDP方式就类似于发送短信,使用这种方式进行网络通讯时,不需要建立专门的虚拟连接,传输也不是很可靠,如果发送失败则客户端无法获得。
网络编程中的两种程序就分别是客户端和服务器端,例如QQ程序,每个QQ用户安装的都是QQ客户端程序,而QQ服务器端程序则运行在腾讯公司的机房中,为大量的QQ用户提供服务。这种网络编程的结构被称作客户端/服务器结构,也叫做Client/Server结构,简称C/S结构。
13、IDE工具字体 推荐sourse code pro , 棱角分明,0和O,1和I l都能分清
14、step into/step out/step over的区别
step into就是单步执行,遇到子函数就进入并且继续单步执行;
step over是在单步执行时,在函数内遇到子函数时不会进入子函数内单步执行,而是将子函数整个执行完再停止,也就是把子函数整个作为一步。
step out就是当单步执行到子函数内时,用step out就可以执行完子函数余下部分,并返回到上一层函数。

step into:进入子函数
step over:越过子函数,但子函数会执行
step out:跳出子函数
15、private static 和 public static 都是静态变量,在类加载时就定义,不需要创建对象
但是private static 是私有的,不能在外部访问,只能通过静态方法调用,这样可以防止对变量的修改
只有static方法和static成员,没有static类的
16、调试开始后,在红箭头指向的区域可以给指定的变量赋值(鼠标左键选择变量,右键弹出菜单选择setValue…)。这个功能可以更加快速的检测你的条件语句和循环语句。
这里写图片描述
17、在drawable文件夹右键新建VectorDrawable 就能创建vector图标了
18、Android Monitor有截图 和录视频功能,查看CPU 内存等使用情况,和启动layout inspector
19、ctrl+alt+home,快速打开对应的Activity或layout文件
20、JAVA7中增强数字的可读性:1000000.0000 —> 1000_000.000_0 编译器会自动省略_
21、Q:git clone 等待时间过长?
A:git clone –depth=1 git@xxx.xxx:xxx,这样就会只获取最新的版本。
22、添加新测试 Ctrl+Shift+T

23、intent 过滤器

<action>

在 name 属性中,声明接受的 Intent 操作。该值必须是操作的文本字符串值,而不是类常量。

<data>

使用一个或多个指定数据 URI 各个方面(scheme、host、port、path 等)和 MIME 类型的属性,声明接受的数据类型。

<category>

在 name 属性中,声明接受的 Intent 类别。该值必须是操作的文本字符串值,而不是类常量。
例如,以下是一个使用包含 Intent 过滤器的 Activity 声明,当数据类型为文本时,系统将接收
mime类型
MIME 是multipurpose Internet mail extensions 的缩写。
它是一种协议,可使电子邮件除包含一般纯文本以外,还可加上彩色图片、视频、声音或二进位格式的文件。
它要求邮件的发送端和接收端必须有解读MIME 协议的电子邮件程序。

24、java中那些类可以不用new;那些类不能new
1:抽象类 abstract class 如URI
Uri uri = Uri.parse(“smsto:” + number);
该类是抽象类
public abstract class Uri implements Parcelable, Comparable
2:接口 interface
3:无公开的构造方法的类 private className() {}等
4:虚接口 abstract inerface

25、是否同一个名字的服务只能启动一个? 那如何启动多个进程和多个服务?
同名只能一个,启动多进程,不同进程中的服务可以同名
26、关于底部的TODO栏 ,添加这句 就能在底部显示了
//TODO 标记todo的词条会出现在底部的TODO菜单,一般用作一些测试数据,这样看底部就可以很快知道测试数据在哪一行
27、四大组件之间的联系
l Activity:页面清新简洁。良好的即时交互
l Service:负责的数据处理、耗时长
l broadcase receiver:下发通知、响应通知
l Content Provider:实现应用间的数据共享
28、android view有以下14个周期:?这是对的吗

1、onFinishInflate() 当View中所有的子控件均被映射成xml后触发 。

2、onMeasure( int , int ) 确定所有子元素的大小 。

3、onLayout( boolean , int , int , int , int ) 当View分配所有的子元素的大小和位置时触发 。

4、onSizeChanged( int , int , int , int ) 当view的大小发生变化时触发 。

5、onDraw(Canvas) view渲染内容的细节。

6、onKeyDown( int , KeyEvent) 有按键按下后触发 。

7、onKeyUp( int , KeyEvent) 有按键按下后弹起时触发 。

8、onTrackballEvent(MotionEvent) 轨迹球事件 。

9、onTouchEvent(MotionEvent) 触屏事件 。

10、onFocusChanged( boolean , int , Rect) 当View获取或失去焦点时触发 。

11、onWindowFocusChanged( boolean ) 当窗口包含的view获取或失去焦点时触发 。

12、onAttachedToWindow() 当view被附着到一个窗口时触发 。

13、onDetachedFromWindow() 当view离开附着的窗口时触发,Android123提示该方法和 onAttachedToWindow() 是相反的。

14、onWindowVisibilityChanged( int ) 当窗口中包含的可见的view发生变化时触发。?

29、View不是Activity,但也继承自Object, 而Activity也继承自Object,java所有的类都继承Object
30、JAR(Java Archive,Java 归档文件)
31、view.bringToFront();
将一个控件放在顶层,如progressbar
32、线程睡眠1秒
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
nextDo();
}
},1000);
33、关于破解电脑密码,可以在pe系统菜单进行修改,也可以进入到pe桌面时再进行修改
34、android可以手动设置组件再哪个进程执行
默认情况下,同一应用的所有组件均在相同的进程中运行,且大多数应用都不会改变这一点。 但是,如果您发现需要控制某个组件所属的进程,则可在清单文件中执行此操作。
各类组件元素的清单文件条目—<activity>、<service>、<receiver> 和 <provider>—均支持 android:process 属性,此属性可以指定该组件应在哪个进程运行。您可以设置此属性,使每个组件均在各自的进程中运行,或者使一些组件共享一个进程,而其他组件则不共享。 此外,您还可以设置 android:process,使不同应用的组件在相同的进程中运行,但前提是这些应用共享相同的 Linux 用户 ID 并使用相同的证书进行签署。
用以下代码,在service中开启多进程,android:process=”com.forgot.test”,若其他的没写明在什么进程,则默认在package同名进程下

<service
    android:name=".service.ThirdService"
    android:enabled="true"
    android:process="com.forgot.test"
    android:exported="false">
</service>

35、android手机开发者选项 的实用功能: 不锁定屏幕,跳过锁屏界面,允许模拟位置(代码修改gps定位),显示触摸操作,指针位置,显示布局边界,显示surface更新,动画缩放(可以更好的查看动画效果,进行参考),调试GPU过度绘制
36、android的网络编程分为2种:基于socket的,和基于http协议的。

* 100~199:指示信息,表示请求已接收,继续处理
* 200~299:请求成功,表示请求已被成功接收、理解、接受
* 300~399:重定向,要完成请求必须进行更进一步的操作
* 400~499:客户端错误,请求有语法错误或请求无法实现
* 500~599:服务器端错误,服务器未能实现合法的请求

常见的状态码如下:

* 200 OK:客户端请求成功
* 400 Bad Request:客户端请求有语法错误,不能被服务器所理解
* 401 Unauthorized:请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
* 403 Forbidden:服务器收到请求,但是拒绝提供服务
* 500 Internal Server Error:服务器发生不可预期的错误
* 503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常

37、在Android中对文件流的操作和Java SE上面是一样的.
–在对大文件的操作时,要将文件写到SDCard上面,不要直接写到手机内存上.
–操作大文件是,要一边从网络上读,一边要往SDCard上面写,减少手机内存的使用.这点很重要,面试经常会被问到.
–对文件流操作完,要记得及时关闭.
38、java泛型是在编译时检查的,而java反射是在运行时检查的,实际运行到该段代码时才会执行该反射语句

没有更多推荐了,返回首页