Android中的adb工具的使用

adb(Android Debug Bridge)是Android提供的一个通用的调试工具,借助这个工具,我们可以管理设备或手机模拟器的状态。还可以进行以下的操作:
  1、快速更新设备或手机模拟器中的代码,如应用或Android系统升级;
  2、在设备上运行shell命令;
  3、管理设备或手机模拟器上的预定端口;
  4、在设备或手机模拟器上复制或粘贴文件;

平台分化可能导致Android平台退出历史舞台

Android平台开源,导致每个手机的配置并不一样,Android开发工程师们要买很多手机去测试自己的Android应用能否正常运行,是否存在bug。一个手机的测试就已经是很痛苦的事情了。这个手机测试数量可能是30,在将来可能是90,180也未可知。并且Android越是流行,采用Android的手机制造商越多,不是每个手机硬件都完美的。越多的次品将会给Android带来严重的负面效应。

【强大HTML5的移动Web应用或将一统天下】

可以用Rexsee(http://www.rexsee.com)等优秀的移动中间件产品将Web应用转换成Apk程序,作为原生的Android应用进行发布。
移动终端之所以风靡全球,除了强大的硬件特性之外,更关键的因素在于其庞大的移动应用软件。在目前看来,在AppStore和Android Market上的应用都是基于两大公司提供给第三方应用开发人员的SDK进行开发的。



【Flurry介绍及使用】

  • 完全免费
  • 提供准确的实时数据,服务稳定
  • 支持iphone、Java、Android、Blackberry平台,并将陆续推出Symbian和WM
  • 后台统计分析界面直观,可查看全球用户分布图等多项服务
  • 支持开发者定义事件(event),更好的追踪用户等

添加 FlurryAgent.jar 到你的classpath

配置AndroidManifest.xml文件,添加权限

android.permission.INTERNET

android.permission.ACCESS_COARSE_LOCATION
android.permission.ACCESS_FINE_LOCATION
在程序中使用 Flurry

import com.flurry.android.FlurryAgent;  Map<String, String> map = new HashMap<String, String>();  map.put("logout_desc", "username [" + user.name + "] logout");  FlurryAgent.onEvent("user Logout", map);  public void onStart() {      super.onStart();      FlurryAgent.onStartSession(this, FLURRY_API_KEY);  }  public void onStop() {      super.onStop();      FlurryAgent.onEndSession(this);  }  

【android.preference.PreferenceActivity】保存设置

界面XML文件:preference_setting.xml

<?xml version="1.0" encoding="UTF-8"?>  <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">      <PreferenceCategory android:title="我的位置源">          <CheckBoxPreference              android:key="my_wireless_network"              android:title="使用无线电"              android:summary="使用无线网络查看应用程序(例如Google地图)中的位置"          />          <CheckBoxPreference              android:key="my_gps_satellite_setting"              android:title="启用GPS卫星设置"              android:summary="定位时,精确到街道级别(取消选择可节约电量)"          />      </PreferenceCategory>            <PreferenceCategory android:title="个人信息设置">          <CheckBoxPreference              android:key="my_yesno_save_individual_info"              android:title="是否保存个人信息"          />          <EditTextPreference              android:key="my_individual_name"              android:title="姓名"              android:summary="请输入真实姓名"          />          <PreferenceScreen               android:key="my_other_individual_msg"              android:title="其他个人信息"              android:summary="是否工作、手机">              <CheckBoxPreference                  android:key="my_is_an_employee"                  android:title="是否工作"              />              <EditTextPreference                  android:key="my_mobile"                  android:title="手机"                  android:summary="请输入您的手机号码"              />          </PreferenceScreen>      </PreferenceCategory>  </PreferenceScreen> 

PreferenceActivity 的类文件:

package com.icitylife.preference;    import android.content.SharedPreferences;  import android.os.Bundle;  import android.preference.Preference;  import android.preference.PreferenceActivity;  import android.preference.PreferenceScreen;  import android.preference.Preference.OnPreferenceChangeListener;    public class Main extends PreferenceActivity implements OnPreferenceChangeListener {      /** Called when the activity is first created. */      @Override      public void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          //设置PreferenceActivity保存数据使用的XML文件的名称           getPreferenceManager().setSharedPreferencesName("mySetting");          //加载XML资源文件:此处就不能使用Activity的setContentView()           addPreferencesFromResource(R.xml.preference_setting);          //获取【姓名】设置项对应的Preference对象           Preference  individualNamePreference=findPreference("my_individual_name");          //获得指向mySetting.xml文件的SharedPreference对象           SharedPreferences sharedPreferences=individualNamePreference.getSharedPreferences();          //设置【姓名】设置项的summary           individualNamePreference.setSummary(sharedPreferences.getString("my_individual_name",""));          //判断【是否保存个人信息】设置项是否被选中           if(sharedPreferences.getBoolean("my_yesno_save_individual_info",false)){              individualNamePreference.setEnabled(true);          }else{              individualNamePreference.setEnabled(false);          }          individualNamePreference.setOnPreferenceChangeListener(this);          //获得【电话号码】设置项对应的Preference对象           Preference mobileNamePreference=findPreference("my_mobile");          SharedPreferences mobileSharedPreferences=mobileNamePreference.getSharedPreferences();          //设置【电话号码】的summary           mobileNamePreference.setSummary(mobileSharedPreferences.getString("my_mobile",""));          mobileNamePreference.setOnPreferenceChangeListener(this);      }        @Override      public boolean onPreferenceChange(Preference preference, Object newValue) {          preference.setSummary(String.valueOf(newValue));          return true;      }            /**      * 处理【是否保存个人信息】的改变事件      */      @Override      public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,              Preference preference){          if("my_yesno_save_individual_info".equals(preference.getKey())){              findPreference("my_individual_name").setEnabled(!findPreference("my_individual_name").isEnabled());          }          return super.onPreferenceTreeClick(preferenceScreen, preference);      }  }  

【android的selector背景选择器】

Android selector选择器可以让你切换自定义的背景风格,比如button、ListView、或者布局点击时候的背景切换等,都需要用到它背景可以是自定义到颜色,或者图片资源

把下面的XML文件保存成你自己命名的.xml文件(比如list_item_bg.xml),在系统使用时根据ListView中的列表项的状态来使用相应的背景图片。

drawable/list_item_bg.xml

<?xml version="1.0" encoding="utf-8" ?><selector xmlns:android="http://schemas.android.com/apk/res/android">    <!-- 默认时的背景图片-->    <item android:drawable="@drawable/pic1" />    <!-- 没有焦点时的背景图片-->    <item android:state_window_focused="false" android:drawable="@drawable/pic1" />    <!-- 非触摸模式下获得焦点并单击时的背景图片-->    <item android:state_focused="true" android:state_pressed="true"        android:drawable="@drawable/pic2" />    <!-- 触摸模式下单击时的背景图片-->    <item android:state_focused="false" android:state_pressed="true"        android:drawable="@drawable/pic3" />    <!--选中时的图片背景-->    <item android:state_selected="true" android:drawable="@drawable/pic4" />    <!--获得焦点时的图片背景-->    <item android:state_focused="true" android:drawable="@drawable/pic5" /></selector>

使用些xml文件:第一种是在listview中配置android:listSelector="@drawable/list_item_bg"

或者在listview的item中添加属性android:background=“@drawable/list_item_bg"即可实现,或者在java代码中使用:Drawable drawable = getResources().getDrawable(R.drawable.list_item_bg);ListView.setSelector(drawable);同样的效果

【AchartEngine】

AChartEngine(简称ACE)是Google的一个开源图表库(for Android)。它功能强大,支持散点图、折线图、饼图、气泡图、柱状图、短棒图、仪表图等多种图表。


【jQuery Mobile】

jQuery Mobile 是jQuery 在手机上和平板设备上的版本。jQuery Mobile 不仅会给主流移动平台带来jQuery核心库,而且会发布一个完整统一的jQuery移动UI框架。支持全球主流的移动平台。jQuery Mobile开发团队说:能开发这个项目,我们非常兴奋。移动Web太需要一个跨浏览器的框架,让开发人员开发出真正的移动Web网站。

【ViewSwitcher】

使用ViewSwitcher实现ListView的数据动态加载

【Layout_width="match_parent"】

"match_parent"(在API level 8之前被称之为"fill_parent"),控件的高度和宽度将和父控件的大小一样。

【DefaultHandler】

sax解析xml文件的DefaultHandler处理类

【AsyncTask对比Thread加Handler】

从Android 1.5开始系统 将AsyncTask引入到android .os包中

使用AsyncTask代替Thread+Handler的方式,不仅调用上更为简单,经过实测更可靠一些,Google在Browser中大量使用了异步任务 作为处理耗时的I/O操作,比如下载文件 、读写数据 库等等,它们在本质上都离不开消息,但是AsyncTask相比Thread加Handler更为可靠,更易于维护,但AsyncTask缺点也是有的比如一旦线程开启即dobackground方法执行后无法给线程发送消息,仅能通过预先设置 好的标记来控制逻辑,当然可以通过线程的挂起等待标志位的改变来通讯,对于某些应用Thread和Handler以及Looper可能更灵活。

【Android读写XML】

Android读写XML主要有2种方法:DOM与SAX(Simple API for XML)

DOM(文档对象模型),为XML文档的解析定义了一组接口,解析器读入整个文档,然后构造一个驻留内存的树结构,然后代码就可以使用DOM接口来操组整个树结构,其他点如下:

  • 优点:整个文档树都在内存当中,便于操作;支持删除、修改、重新排列等多功能。
  • 缺点:将整个文档调入内存(经常包含大量无用的节点),浪费时间和空间。
  • 使用场合:一旦解析了文档还需要多次访问这些数据,而且资源比较充足(如内存、CPU等)。

为了解决DOM解析XML引起的这些问题,出现了SAX。SAX解析XML文档为事件驱动,详细说明请阅读Android读写XML(中)–SAX。当解析器发现元素开始、元素结束,文本、文档的开始或者结束时,发送事件,在程序中编写响应这些事件的代码,其特点如下:

  • 优点:不用事先调入整个文档,占用资源少。尤其在嵌入式环境中,极力推荐采用SAX进行解析XML文档。
  • 缺点:不像DOM一样将文档长期驻留在内存,数据不是持久的,事件过后,如没有保存数据,那么数据就会丢失。
  • 使用场合:机器性能有限,尤其是在嵌入式环境,如Android,极力推荐采用SAX进行解析XML文档。

在 Android 上使用 XML

【Android拆分函数split】

如果使用"."、"|"、"^"等字符做分隔符时,要写成s3.split("//|")的格式,否则不能拆分

【Android应用签名】

【Android DatePicker】

getMonth ()
获取选择的月份。(注意:返回数值为0..11,需要自己+1来显示)


【Android源码下载】

贡献15本pdf完整版经典Android教程和海量Android源码

DEVDIV

更多相关文章

  1. 箭头函数的基础使用
  2. NPM 和webpack 的基础使用
  3. Python list sort方法的具体使用
  4. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
  5. 【Android您问我讲】Android(安卓)2.x中使用actionbar - Actionb
  6. Android多媒体开发 Pro Android(安卓)Media 第一章 Android图像
  7. Android(安卓)创建与解析XML(一)—— 概述
  8. Android读写XML(中)――SAX
  9. Android中资源文件的使用

随机推荐

  1. 一文读懂简单工厂、工厂方法、抽象工厂
  2. 解决PHP处理Ajax请求与Ajax跨域问题
  3. 详解PHP底层运行机制与工作原理
  4. 学习php-fpm服务启动脚本的方法
  5. php设计模式之组合模式——处理树形结构
  6. 使用注册树及工厂模式来替代使用单例模式
  7. 了解php-fpm中max_children的配置
  8. php in_array函数用法(实例)
  9. php设计模式:桥接模式学习心得(附案例代码)
  10. 直击PHP进程管理器php-fpm