1、在eclipse中,可以启动两个Android AVD,步骤是:
(1)在AVD Manager中建两个AVD;
(2)在AVD Manager中选择一个AVD启动,在eclipse的项目上选择运行一个项目,这个项目的Run Configuration配置在另外一个AVD上运行。
2、 在字符串资源和布局资源下面,可以添加任意个xml文件,在R.java中可以做相应的引用。只不过,我们习惯于在string.xml中存放所有的字符串定义。
3、Android中的关键资源:
颜色资源<color name=”red”>#f00</color>
字符串资源:<string name=”app”>Test</string>
尺寸资源:<dimen name=”mysize_in_pixels”>1px</dimen>
图像资源:BitmapDrawable类
位图资源:ColorDrawable 或者GradientDrawable类
任意XML资源:res/xml/*.xml
任意原始资源:res/raw/*.* InputStream获取
任意原始资产:assets/*.*/*.* AssetManager InputStream
4、 Android的命令行:
(1) 列出模拟器列表命令:“\tools\android list avd”
(2) 启动模拟器命令:“\tools\emulator.exe @avdname ”, 其中参数avdname是AVD的名称。
5、adb、Shell和SQLITE
(1)adb:Android Debug Bridge,Android调试桥。一个命令行工具,设备上的远程shell。
(2)查看正在运行的设备列表命令:\tools\adb devices
(3)查看adb帮助命令:\tools\adb help
(4)使用adb在连接的设备(模拟器)上打开一个shell:\tools\adb shell
(5)将sqlite数据库contacts2.db下载到本地机器下,然后用SQLite3的任何GUI工具分析数据库。下载到c盘的命令是:adb pull /data/data/com.android.providers.contacts/databases/contacts2.db c:/contacts2.db
(6)我们使用Sqliteman(http://sqliteman.com/),这是一个使用SQLite数据库的GUI工具,能很好地运行。
(7)Shell总结:
A、#号是shell提示符。
B、查看shell中可用的命令集,使用命令:
#ls /system/bin
C、查看根级目录和文件,使用命令:
#ls –l
D、查看数据库列表,使用命令:
#ls /data/data
E、此目录包含设备上安装的包的列表,我们看一个示例,分析一下com.android.providers.contacts包,使用命令:
#ls /data/data/com.android.providers.contacts/databases
此命令列出数据库文件contacts2.db,它是一个SQLite数据库。
F、Shell中不能运行find命令,可以查看所有的*.db文件,使用命令:
#ls –R /data/data/*/databases
(8)SQLite总结:
A、通过在adb shell内部键入以下命令,可以在contacts2数据库上调用sqlite3:
#sqlite3 /data/data/ com.android.providers.contacts/databases/contacts2.db
注意:adb shell的提示符是#,sqlite3的提示符是sqlite>.
B、键入以下命令,可以看到一组表:
sqlite> .tables
C、可以使用sql语句在sqlite3中,比如:
sqlite> select * from table1
sqlite> select count(*) from table1
sqlite> select col1, col2 from table1
sqlite> select distinct col1 from table1
D、退出sqlite3的命令:
sqlite>.exit
6、ContentProvider知识::
(1) android内部URI的结构:以content开头,具体通用形式:
content://*/*/* 或者
content://authority-name/path-segment1/path-segment2/etc…
(2) .....
.....
7、服务(Service)
Android支持两种类型的服务:本地服务和远程服务。本地服务无法供在设备上运行的其他应用程序访问。一般而言,这些服务类型仅支持承载该服务的应用程序。而对于远程服务,除了可从承载服务的应用程序访问,还可以从其他应用程序访问。远程服务使用AIDL(Android Interface Definition Language, Android接口定义语言)向客户端定义自身。
本地服务由Context.startService()启动,启动之后,这些类型的服务将持续运行,直到客户端调用服务的Context.stopService()或者服务自己调用stopSelf()。我们在服务的onCreate()而不是onStart()方法中创建和启动线程。
对于远程服务,从客户端应用程序调用远程服务,必须调用bindService()方法,而不是startService()方法。而对于断开远程服务,需要使用unbindService()方法。
尽管很容易想到服务可以调用活动,但是服务绝不应该直接调用活动。服务应该创建一个通知,让用户通过通知了解期望的活动。
8、调试中,显示错误:“newInstance failed: Lcom/xuanxiu/Android/MyProjectActivity; not accessible to Landroid/app/Instrumentation;”
解决方法:在AndroidManifiest.xml中注册该activity,并且确保这个类的声明是是public