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? A: 要做进程间的调用需要是用AIDL,如果只是线程间的调用只需要是用LocalService[[BR]] 参考 http://www.poemcode.net/2010/05/aidl-ipc/ ---- 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]]