Q:assets与res/raw的不同? [[BR]] A: 简单来说assets用于存放需要打包到应用程序的静态文件,以便部署到设备中,支持任意深度的子目录,这些文件不会生成任何资源ID,[[BR]] 访问的时候需要AssetManager类,使用/assets开始(不包含它)的相对路径名。 [[BR]] {{{ AssetManager am = null; am = getAssets(); InputStream is = am.open("filename"); }}} res/raw中的文件会被映射到R.java文件中,访问的时候直接使用资源ID即R.id.filename;[[BR]] {{{ InputStream is =getResources().openRawResource(R.id.filename); }}} ---- Q:Android异步处理方式? 优缺点[[BR]] A: 处理一:使用Thread+Handler实现非UI线程更新UI界面[[BR]] 处理二:使用AsyncTask异步更新UI界面[[BR]] 处理三:Handler+Looper+!MessageQueue[[BR]] 处理四:异步多线程类的封装,模拟android !AsyncQueryHandler 这个类封装,这样代码比较简洁,一般命名为[http://www.cnblogs.com/xitang/archive/2011/09/21/2184452.html AsyncWorkHandler][[BR]] 感觉最佳方式是AsyncTask,线程池可以免去新建线程的开销[[BR]] “!AsyncTasks should ideally be used for short operations (a few seconds at the most.) ”不过文档建议如果太长的操作还是自己使用java.util.concurrent 类来做[[BR]] AsyncTask的本质是一个线程池,所有提交的异步任务都会在这个线程池中的工作线程内执行,当工作线程需要跟UI线程交互时,工作线程会通过向在UI线程创建的Handler[[BR]] ---- Q:在什么情况下使用AIDL?[[BR]] A: 要做进程间的调用需要是用AIDL,如果只是线程间的调用只需要是用LocalService[[BR]] 参考 http://www.poemcode.net/2010/05/aidl-ipc/ ---- Q: Android不同应用间调用的四种方式[[BR]] A: http://ffwmxr.blog.163.com/blog/static/663727222014329105521355/ [[BR]] Activity可以跨进程调用其他应用程序的Activity,这种调用其他应用的界面[[BR]] Content Provider可以跨进程访问其他应用程序中的数据(以Cursor对象形式返回),当然,也可以对其他应用程序的数据进行增、删、改操作;适合大量记录型数据传输,android本省系统很多服务实际使用这种方式,实际上也是是用Binder的机制来完成,参考这篇文章http://blog.csdn.net/luoshengyang/article/details/6967204 [[BR]] Broadcast可以向android系统中所有应用程序发送广播,而需要跨进程通讯的应用程序可以监听这些广播,Broadcast做法相对简单,但速度慢;[[BR]] Service和Content Provider类似,也可以访问其他应用程序中的数据,但不同的是,Content Provider返回的是Cursor对象,而Service返回的是Java对象,这种可以跨进程通讯的服务叫AIDL服务。[[BR]] 如果通一个应用Activity和Service通信可以是用LocalService实现,Service向Activity发消息则可以是用Broadcast[[BR]] ---- Q: 要不要通过标注缩减初始化代码?像 [https://github.com/roboguice/roboguice/wiki roboguice],[https://github.com/excilys/androidannotations/wiki AndroidAnnotations], [http://jakewharton.github.io/butterknife/ butterknife][[BR]] ---- Q:是否需要是用DAO[[BR]]