Android高手必看的十个建议

news/2024/7/16 9:03:38 标签: Android, Linux, JNI, 企业应用, 设计模式

1、Q:如何成为高手?

  A:成为一名真正的Android高手必须掌握和遵循的一些准则:

  1)学会懒惰
     aDon't Reinvent the Wheel(不要重复发明轮子)。
     bInventing the Wheel(发明轮子)。
     cDon't Reinvent the Wheel(不要重复发明轮子)。
     “轮子理论”,也即“不要重复发明轮子”,这是西方国家的一句谚语,原话是:Don't Reinvent the Wheel。“不要重复发明轮子 ”意思是企业中任何一项工作实际上都有人做过,我们所需要做的就是找到做过这件事情的人。拿到软件领域中就是指有的项目或功能,别人已经做过,我们需要用 的时候,直接拿来用即可,而不要重新制造。 

  2)精通Android体系架构、MVC、常见的设计模式、控制反转(IoC)

  3)编写可重用、可扩展、可维护、灵活性高的代码

  4)高效的编写高效的代码

  5)学会至少一门服务器端开发技术
   

2、Q:JNI是什么?

   A:JNI是Java Native Interface的缩写,中文为JAVA本地调用。从Java1.1开始,Java Native Interface(JNI)标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI一开始是为了本地已编译语言,尤其是 C和C++而设计的,但是它并不妨碍你使用其他语言,只要调用约定受支持就可以了。

     使用java与本地已编译的代码交互,通常会丧失平台可移植性。但是,有些情况下这样做是可以接受的,甚至是必须的,比如,使用一些旧的库,与硬件、操作系统进行交互,或者为了提高程序的性能。JNI标准至少保证本地代码能工作在任何Java 虚拟机实现下。


3、Q:AndroidLinux的区别?

  A:Android是一个专门针对移动设备的软件集,包括一个操作系统,中间件和一些重要的应用程序。Android SDK 提供了在Android平台使用java语言进行android 应用程序开发必须的工具和API接口。Android 系统架构除了Linux2.6内核之外,还提供了丰富的lib和适用于java的运行时环境(很重要的一点是Dalvik虚拟机,类似于JVM)、应用程 序框架和核心应用。在此基础之上可以快速开发应用程序。

  linux内核像是核心技术支持,而google 将其商业化于移动设备上。android上开发应用程序和Windows MFC开发有些类似。


4、Q:SDK升级了,如何更新SDK?

  A:更新SDK是非常棘手的。当一个新的SDK发布,必须是plugin也发布。更新容易出现的错误是两个版本都存在,而且都不正常。最终不得不卸载了它 们并且重新安装最新的一个。然后那个最新的SDK工作正常了。建议任何面对SDK或者plugin升级的人都采用相同的过程。简单的卸载老版本,然后安装 新版本。不要升级。


5、Q:如何进入Recovery模式
   
  A:每部Android设备进入Recovery模式的方法不同。以Milestone为例:若bootloader为90.78,按住键盘的“X”键, 再按电源键开机,看到moto的经典logo即可放开此2键。等待出现一个三角形图标,然后按住音量向上键+轻按拍照键,会出现四个选项。放开按键,可以 用方向键选择一个选项。作用分别为重启,应用update.zip,清除所有数据至出厂状态、清除cache。

6、Q:Android bionic移植需要注意的事项
  A:下面通过一个例子来说明移植binic需要做的事情(BIONIC使用的内核头文件从2.6.29 升级到 2.6.31):
  1)修改之前,先要备份 android/bionic 

  2)按照下面方法复制linux kernel v2.6.31 头文件: 
  复制 include/asm-generic 到 bionic/libc/kernel/original folder 
  复制 include/linux 到 bionic/libc/kernel/original folder 
  复制 include/mtd 到 bionic/libc/kernel/original folder 

  3)运行 tools/update_all.py 脚本,生成新的头文件,方法如下. 
  $ cd android/bionic/libc/kernel 
  $ tools/update_all.py 
  以上的操作将复制新的头文件到 bionic/libc/kernel/common 目录

  4)删除 bionic/libc/kernel/original 目录

  5)复制平台相关的头文件:
  复制 linux v2.6.31 平台相关的 asm 目录到指定的路径,方法如下:
  复制 arch/arm/include/asm 到 android/bionic/libc/kernel/arch-arm/ 
  复制 arch/x86/include/asm 到 android/bionic/libc/kernel/arch-x86/ 

  6)从 v2.6.29 bionic/libc/kernel/common/linux 复制一下的头文件到新的 android/bionic/libc/kernel/common/linux 目录:
  android-alarm.h 
  android-pmem.h 
  android_power.h 
  ashmem.h 
  binder.h 
  msm_adsp.h 
  msm_audio.h 
  msm_mdp.h 
  keychord.h 

  7)编译
  $ cd android 
  $ make -j4


7、Q:Android源码下vendor目录下文件的作用?
  
  A:指的是某些公司的产品型号,主要是一些针对硬件配置的东西,比如radio 方面的,若是采用TI 的,这里面会有TI提供的一些RIL方面的接口等。


8、Q:编译Android源码和编译Android内核有什么区别?

  A:其实没什么区别,就多了几个android特有的驱动,最重要的是binder


9、Q:如何获取手机和存储卡上的图片?
  
  A:
  /**
  * 通过uri获取文件的绝对路径
  * @param uri
  * @return
  */
  protected String getAbsoluteImagePath(Uri uri) 
  {
  // can post image
  String [] proj={MediaStore.Images.Media.DATA};
  Cursor cursor = managedQuery( uri,
  proj, // Which columns to return
  null, // WHERE clause; which rows to return (all rows)
  null, // WHERE clause selection arguments (none)
  null); // Order-by clause (ascending by name)
   
  int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
  cursor.moveToFirst();
   
  return cursor.getString(column_index);
  }
复制代码
10、Q:如何使用双缓冲?
   
  A:系统自身已经实现了双缓冲,也就是说为了避免重影,必须连续onDraw两次,或者是对上一次onDraw里面画脏的部分进行修复。
  执行Bitmap.createBitmap函数一般要花销100-300ms的时间,要想提高它的效率,只能祈祷google能把android的代码写得更高效一些了。


http://www.niftyadmin.cn/n/1002776.html

相关文章

利用微信公众平台实现服务器交互(蟒蛇+龙卷风)

下载文章的PDF之前看到很多篇调用微信公众平台接口的文章,今天小试了一把,确实很不错。实现的功能如下:代码如下:?12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152…

linux系统硬件配置查看方法

http://blog.163.com/yang_jianli/blog/static/1619900062010391127338/ 一:查看cpu more /proc/cpuinfo | grep "model name" grep "model name" /proc/cpuinfo 如果觉得需要看的更加舒服 grep "model name" /proc/cpuinfo | cut -f…

source insight 3.5配色自用

source insight 3.5配色自用主要存一下,方便自己以后使用啊?你问为什么我不用source insight 4, 要用15年的老古董,我劝你别问,问就是规定。黑色主题全局配置文件https://files-cdn.cnblogs.com/files/senior-engineer/dark.zip来…

2014 jack对性能优化的记录

jack对性能优化一点看法1.对于数据库而言,我觉得数据库安全和稳定是第一,性能优化第二2.导致数据库性能因素:软件设计:利用中间件,减少并发产生的问题。软件代码的编写(SQL本身,SQL没有绑定变量…

Android开发——Android搜索框架(二)

1.创建搜索建议提供者 Android已经为我们创建了一个默认的,我们只需要继承 SearchRecentSuggestionProvider 就稍做修改就可以了。 见代码: 1:import android.content.SearchRecentSuggestionsProvider; 2:3:/**4:* 搜索提示5:* 6:* author Hanguo7:…

eclipse中查看安装的所有插件,并选择性的将其卸载

牢骚:前一段时间安装了一个将错误日志回传到邮箱的eclipse插件,安装此插件对捕获debug虽然很方便,但是也带了我不小的困扰,比如:eclipse加载速度慢、打开速度慢,有时还会引起一些异常,这不&…

OpenMP VS2010 环境配置

在VS中集成了openmp所以只要在配置完工程后&#xff0c;设置openmp开启就好了。有以下5布&#xff1a;打开项目的“属性页”对话框。 展开“配置属性”节点。展开“C/C”节点。选择“语言”属性页。修改“OpenMP 支持”属性。测试代码&#xff1a;#include <stdio.h> #in…

Excel中通用類型轉換為日期格式

公式&#xff1a;DATE(LEFT(N2,4),MID(N2,5,2),RIGHT(N2,2))其中N為需要轉換日期的目錄數據欄&#xff0c;2為單元格位置方法&#xff1a;1.用公式進行轉換2.選擇公式轉換過的欄位&#xff0c;複製3.在新列中&#xff0c;選擇性粘貼&#xff0c;選擇值類型4.在將選擇性粘的值&a…