Android开发
2015年12月26日
2016年1月11日增加GUI模型
开发、调试、测试、日志等并发布APK。
参考:疯狂Android讲义第2、3版。
参考:http://jingyan.baidu.com/article/90895e0fce970264ec6b0bf2.html
注意:如果装有豌豆荚,可能会导致ADB无法启动,请关闭所有相关的exe进程。
参考:http://chenfeicqq.iteye.com/blog/1889160
参考:android高级编程,疯狂Android讲义。
参考:http://blog.sina.com.cn/s/blog_55b1b0d50100i8k9.html
操作系统管理进程、线程、回收等资源。APK、Activity、Service等都是程序单元和组织,由系统统一管理。
Andorid系统模型类似一个互联网,OS作为服务器管理硬件资源,程序作为网站向外提供服务。
OS:统一管理程序单元
-|进程,由OS统一管理、回收,程序单元无法控制
--|线程,由OS统一管理、回收,程序单元无法控制
类似HTTP服务,网页由Activity模拟,Web服务由Service模拟,TCP、UDP由intent/intentFilter、ContentProvider/ContentResolver、BroadcastResolver/*.sendBroadcast模拟。
管理全局属性,配置程序单元。
组织结构:
Activity:逻辑组织(类似JS),处理Res的Layout等View元素。
Res:常变资源(类似HTML),将被编译为R.java的类,从其中直接操作XML中定义的资源。
需要connect或bind到Service才能使用服务。
可以接受感兴趣的广播。
参考:http://www.cnblogs.com/mfryf/archive/2013/05/21/3090726.html
http://segmentfault.com/a/1190000002924501
assets:不编译,直接使用。
Res:编译为R.java
-|Layout:布局
--|Window:绘制窗口
---|Control:具体的组件
---|…
-|menu:菜单
-|value:各种值(类似枚举)
…
View直接使用Layout的文件名称
setContentView(R.layout.activity_main);
编译为R.java类,从其中直接读取ID等,可以取得相应的资源。
增加资源:@+资源类型/名称。
定义id
android:id="@+id/button"
读取id代表的资源:(资源类型)findViewById(R.id.名称)。
使用id获取资源
Button button = (Button)findViewById(R.id.button);
在XML中引用资源:@【包名:】类型/id
使用系统资源:android.R。xml中使用@android:类型/id
参考:http://www.cnblogs.com/greatverve/archive/2011/12/27/Android-xml.html
http://blog.csdn.net/ocean20/article/details/44198453
http://blog.csdn.net/leichelle/article/details/7949484
AssetManager am=getAssets();
InputStream is =assset.open("filename");
参考:http://www.cnblogs.com/warioland/archive/2011/10/26/2224845.html
http://zhchzh1000.iteye.com/blog/747620
参见:Android开发-前端视图Activity.docx
参考:http://vcsos.com/Article/pageSource/140816/20140816162242.shtml
http://blog.csdn.net/afterwinter/article/details/44243891
原因:ADB使用TCP 5037端口,如果被占用,则无法启动。
解决方法:查找TCP 5037占用的进程,关闭此进程。
netstat -aon|findstr "5037"
参考:http://jojol-zhou.iteye.com/blog/696567
可以使用Log类的静态函数(verbose,debug,info,warning,error对应的函数)输出调试信息(会调用println()输出),也可以直接调用System.out.println()输出(可以使用info过滤)。
Verbose:所有log信息。
Debug,Info,Warning,Error级别逐渐提高。
示例
public void click3(View source){
((TextView)findViewById(R.id.textView)).setText("Button3.clicked!");
System.out.println("btn3 click.");
Log.v("btn3","verbose");
Log.d("btn3","debug");
Log.i("btn3","info");
Log.w("btn3","warning");
Log.e("btn3","error");
}
参考:
http://stackoverflow.com/questions/21449947/how-do-i-set-the-minimum-api-level-for-projects-in-android-studio
File-》ProjectStructure-》App-》Flavor-》Mini SDK Version。
设置后等待工程更新。
参见:Android开发-后端Model_Service.docx
参见:Android开发-前后端控制器intent.docx