android 知识

来源:互联网 发布:网络投资 编辑:程序博客网 时间:2024/05/21 01:57

每一个Android应用在底层都会对应一个独立的Dalvik虚拟机实例,而每一个虚拟机实例都是一个独立的进程空间,不同的应用在不同的进程空间里运行,当一个虚拟机关闭或意外中止时不会对其它虚拟机造成影响,可以最大程度的保护应用的安全和独立运行。Android进程内存占用的默认最大值为16M或32M ,该值只是指dalvik上分配的内存,它不包括在native上分配的内存值默认一个APK包就对应一个进程,其进程名就为AndroidManifest.xml文件中 指定的package名。我们可以通过Activity, Service, BroadCastReceiver, ContentProvider的android:process属性来实现单APK多进程

在java程序中,如果已经不再使用某个对象,但是因为仍然有引用指向它,垃圾回收器就无法回收它,当然该对象占用的内存就无法被使用,这就造成了内存泄露。



Android的每个进程有一个称为“main”主线程(也称UI线程)的线程。它除了负责所有事件的分发和处理,还负责4大组件的生命周期函数的调用。更多内容请参考《Android线程模型》和《Looper和Handler
Handler用于异步消息的处理。默认情况下Handler与其创建者处于同一线程, 如果Handler里面做耗时的动作,其对应线程自然会阻塞。



Android在shell中提供了am命令来发送Intent,它的源码为位于frameworks/base/cmds/am.它本身是用JAVA代码来实现的。执行am命令其实是通过运行shell脚本frameworks/base/cmds/am/am,然后在该脚本中运行app_process命令来启动am这个java程序的。


Android应用程序的默认安装位置以及是否可移动取决于开发者在其AndroidManifest.xml中的设置
<manifest xmlns:android="http://schemas.android.com/apk/res/android"        
      android:versionCode="1" 
      android:installLocation="auto" 
      android:versionName="1.0"> 
android:installLocation的值有三个 internalOnly ,auto,preferExternal,缺省值为internalOnly
internalOnly表示该应用程序只能安装到手机内部存储中。
auto表示由系统决定该应用程序安装到手机内部存储中还是SD卡中。 如果有SD卡且应用程序大于5M的话,安装到SD卡中,否则安排到手机内部存储中
preferExternal表示如果有SD卡就把该应用程序只能安装到SD卡中,否则安装到手机内部存储中。



AndroidManifest.xml是每个android程序中必须的文件。它位于整个项目的根目录,描述了package中暴露的组件(activities, services, 等等),他们各自的实现类,各种能被处理的数据和启动位置。 除了能声明程序中的Activities, ContentProviders, Services, 和Intent Receivers,还能指定permissions和instrumentation(安全控制和测试)


一个AndroidManifest.xml中必须含有一个Application标签,这个标签声明了每一个应用程序的组件及其属性(如icon,label,permission等



用pushd实现在不同目录间切换。如果你需要从堆栈中删除一个目录,键入popd,然后是目录名称,再按回车键。想查看堆栈中目录列表,键入dirs,然后按回车键。


awkawk 用来从文本文件中提取字段。缺省地,字段分割符是空格,可以使用-F指定其他分割符。

sed: Sed是一个基本的查找替换程序。可以从标准输入(比如命令管道)读入文本,并将结果输出到标准输出(屏幕)。该命令采用正则表达式(见参考)进行搜索。


#!/bin/sh
  myPath="/var/log/httpd/"
  myFile="/var /log/httpd/access.log"
  #这里的-x 参数判断$myPath是否存在并且是否具有可执行权限
  if [ ! -x "$myPath"]; then
  mkdir "$myPath"
  fi
  #这里的-d 参数判断$myPath是否存在
  if [ ! -d "$myPath"]; then
  mkdir "$myPath"
  fi


#这里的-f参数判断$myFile是否存在
  if [ ! -f "$myFile" ]; then
   touch "$myFile"
  fi
  #其他参数还有-n,-n是判断一个变量是否是否有值
  if [ ! -n "$myVar" ]; then
  echo "$myVar is empty"
  exit 0
  fi
  #两个变量判断是否相等
  if [ "$var1" = "$var2" ]; then
  echo '$var1 eq $var2'
  else
  echo '$var1 not eq $var2'
  fi


findViewById是在当前Active的View根及其儿子中通过Id寻找View。Active的View根一般是在其在onCreate函数中可以通过setContentView(R.layout.main)这种形式来设置。





原创粉丝点击