《Android应用开发揭秘》 书名:Android应用开发揭秘 作者:杨丰盛 出版社:机械工业出版社 ISBN:9787111291954 出版日期:2010 年3月(1版2次) 3.1.2 Android应用解析 上面我们了解了Android应用程序的目录结构和其中每个文件的功能,要进行应用开发,还需要对Android应用构造进行深入分析。 当然,也不是每个Android应用程序都必须由这4部分组成,可以根据开发者需求进行组合,比如上面建立的HelloAndroid项目就只使用了Activity这一个模块。 图3-13 退出应用程序 通过上面的例子,我们得出Android应用程序的生命周期如图3-14所示。 相信通过本章的学习,你已经开始“喜欢”上Android了,有你的这份热情和执着,加上每一章的示例,让你边学边做,理论加实践,轻轻松松学会Android应用开发。加油吧!后面的内容更精彩。
- 10-17 09:51:58.930: D/STATUSBAR-NetworkController(2441): refreshSignalCluster: data=-1 bt=false 开发中遇到了上述错误 target GC heap from 64.996MB to 64.000MB 08-12 12:48:52.798: D/dalvikvm(15260): GC_FOR_ALLOC freed 1K, 3% class DemoActivity extends Activity { Bitmap map1, map2, map3, map4; /** Called when the 那为什么区区3,4张图片就会让 android 程序内存不足? 设备限制是一方面,像上面第3点说的,每个 android 设备的内存限制不一样,这个程序在模拟器上会有问题,在其他设备上,比如:galaxy 就不会有问题。
framework/base/service/java/com/mokoid/server/LedService.java package com.mokoid.server; import android.util.Config ; import android.util.Log; import android.content.Context; import android.os.Binder; import android.os.Bundle ; import android.os.RemoteException; import android.os.IBinder; import mokoid.hardware.ILedService; mokoid_setOff分别映射到了_init, _set_on, _set_off, 所以这里可以直接调用这三个接口并且分别被封装到LedService的构造函数,setOn()和setOff()成员函数中,这样 android 的应用程序就可以通过这个类来操作led了。
octopus@octopus:~$ 以二进制形式输出日志 : 使用 adb logcat -B 命令; octopus@octopus:~$ adb logcat -B -t 5 O��_�3ZS : line = 1331the structure include nmea_cb address is 0x658cc8e8 H��_�3ZSEGEgps_mt3326nmea_reader_addc : line = 1332nmea_cb address is 0x5d2fe279 i���3ZS�)>ADB_SERVICEScreate_local_service_socket() name=shell :export ANDROID_LOG_TAGS="" ; exec logcat -B -t 5 7*E*E�3ZSo�YADB_SERVICESadb: unable to open /proc/17706 interface index=0; E/dalvikvm( 756): GC_CONCURRENT freed 1820K, 27% free 19490K/26695K, paused 16ms+3ms
android开发中使用AndroidManiFest.xml静态注册的BroadCastReceiver没有作用是什么原因? to discover and pair bluetooth devices) android蓝牙开发——权限 为了在应用程序中使用蓝牙功能,我们至少需要声明两方面的权限:BLUETOOTH和BLUETOOTH_ADMIN 大多数应用程序必须具有这个权限才能够发现本地蓝牙设备,这个权限保护的其他能力(除了发现本地设备)不应该被使用,除非你的应用程序是在用户请求的时候能够修改蓝牙设置的管理者。 你需要在应用程序的manifest文件中声明程序的蓝牙权限。 </manifest> 关于声明应用程序权限的信息,请看<uses-permission>参考。
AudioManager.STREAM_MUSIC); 使用这两个音量就可以计算出运行SoundPool音效的音量 , 当前音量 / 系统最大音量 , 结果就是soundPool.play()方法中需要传入的音量 ; 3. initSoundPool(); } private void initSoundPool() { soundPool = new SoundPool(3, SoundPool播放的音效要小于7秒 , 否则会出现加载失败的现象; 在Android平台上使用的即时文件越小越好 , 必要的时候可以降低采样频率或者将立体声改为单声道;
="@drawable/bg_normal"/> </selector> 3. 案例演示 XML布局文件 : <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android 如果不设定右侧 和 下册的线条, 那么默认右边和下侧会有一定边距; 设定右边和下边距完全显示 : 这里为了显示效果明显, 设置完全显示; 拉入 draw9patch.bat 编辑器, 开始编辑 : (3) > <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width=" > <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="
注意一个错误 : 已安装具有该名称和不同签名的数据包 , 早上测试人员报告突然出现这个问题, 在开发的时候我直接将eclipse上编译的版本放到了服务器上, 最后出现了这个问题, 开发的时候明明是好的啊 又发现一个BUG : 在弹出更新对话框, 点击确定下载完毕之后会弹出系统自带的替换应用程序对话框, 在这里点取消的话就会一直卡在Splash界面. 设置一个跳转机制解决这个问题. , * 就执行下面的操作, 如果时间差不足3秒, 就Thread.sleep时间差 * 等够3秒在执行下面的操作 */ time 保持Splash持续时间 : 获取当前时间与time进行比较, 如果不足3秒, 人为使Splash保持3秒时间; b. ="0" android:duration="200" /> </set> (3) SplashActivity源码 SplashActivity.java public
一、Android基于Linux平台,由操作系统、中间件、用户界面和应用软件组成。 二、特点:1、开放性 2、应用程序无界限 3、应用程序在平等的条件下创建 4、应用程序可以轻松的嵌入网络 5、应用程序可以并行运行。 三、Android系统架构分为四层: 应用层:java编写运行在虚拟机上的程序。 应用框架层:编写应用时使用的API框架。 系统运行库层:C/C++库 Linux内核层 四、Dalvik虚拟机 1、专有的dex文件格式 2、dex优化 3、基于寄存器 4、一个应用、一个虚拟机实例、一个进程 五、OMS open 3、ContentProvider ContentProvider用来解决在不同的应用包之间共享数据的工具。
如果没有出现异常就说明连接成功; 注意 : 执行这个方法的时候, 不能与蓝牙扫描同时进行, 在执行该方法前, 要先停止蓝牙扫描, 调用BluetoothAdapter的cancelDiscovery()方法; (3)
配置文件 配置 ActionBar 启用 和 关闭 配置文件中指定 targetSdkVersion : 在创建应用的时候, 指定的 targetSdkVersion 大于 3.0 版本, 就会默认启用 :theme="@android:style/Theme.Holo.Dialog.NoActionBar"> 3. "/> <item android:id="@+id/menu1_item3" android:title="menu1_item3 ; -- setHomeButtonEnable(boolean) : 设置是否将应用程序图表转换为可点击按钮; 2. (true); /* 不显示应用程序图标 */ actionBar.setDisplayShowHomeEnabled(false); 设置点击图表回调事件 : ActionBar 中的图表代表的组件
调用BluetoothAdapter的getBoundedDevices()方法, 可以获取已经配对的蓝牙设备集合; 3. 需要权限 android.permission.BLUETOOTH : 允许程序连接到已配对的蓝牙设备, 请求连接/接收连接/传输数据需要改权限, 主要用于对配对后进行操作; android.permission.BLUETOOTH_ADMIN : 允许程序发现和配对蓝牙设备, 该权限用来管理蓝牙设备, 有了这个权限, 应用才能使用本机的蓝牙设备, 主要用于对配对前的操作; 优先级 : BLUETOOTH权限是BLUETOOTH_ADMIN权限的前提 ,远程蓝牙设备的名称被发现改变 或者 第一次发现远程蓝牙设备的名称的时候发出该广播, 该广播包含附加域 EXTRA_DEVICE , EXTRA_NAME附加域; 需要BLUETOOTH权限; (3)绑定状态常量 -1000-8000-00805F9B34FB 参数 : 用来识别远程蓝牙设备的UUID, 该UUID用来查询RFCOMM通道的服务记录; 返回值 : 创建的BluetoothSocket连接对象 (3)
Android开发之《Android应用开发揭秘》UI事件汇总 /* * Android开发之《Android应用开发揭秘》UI事件汇总 * 北京Android俱乐部群:167839253 * 还好,现在沉淀下来,继续android开发的征程。 以下是Android应用开发揭秘这本书第四章的关于UI的事件处理的总结。基本上都是可以复用的代码。存着日后方便。 3" android:title="毛笔" /> </group> </menu> </item> <item android:id="@+id/color_submenu" android ="2" android:title="青色" /> <item android:id="@+id/color" android:orderInCategory="3" android:title :orderInCategory="2" android:title="细" /> <item android:id="@+id/width" android:orderInCategory="3
Android功能快速上线神器! 推荐一款开源的轻应用开发框架RapidView:[https://github.com/Tencent/RapidView) 用过的都说好,神器! 简介 RapidView是一套用于开发Android客户端界面、逻辑以及功能的开发组件。 RapidView的XML语法规则与Android原生XML类似,而写逻辑的Lua部分除语言语法规则外,可以直接使用我们提供的Java API以及Android原生API,因此熟悉Android客户端开发的开发者上手成本会非常小 除了解决动态更新问题外,RapidView希望Android开发者能够以更快的速度开发产品功能需求,因此我们在语法和开发方式上做了一些改变,期望开发者能够实现:小功能极速开发、大功能极速上线。 3.开发与调试 打开RapidConfig.java,将一个名为DEBUG_MODE的静态boolean成员的值改为true并在本地重新编译并安装到手机。
BluetoothSocket连接; (2)监听连接 public BluetoothSocket accept () 作用 : 阻塞一直到连接建立; 返回值 : 监听到的BluetoothSocket连接; (3)
UI = 控件 + 布局,上一节介绍的是简单控件,这里主要介绍一下Android应用界面开发中的布局。 五大布局 LinearLayout:线性布局。 RelativeLayout:相对布局。 android:gravity:该属性用于控制它所包含的子元素的对齐方式。 外边距 android:marginLeft:控件距布局左边界的距离。 android:marginTop:控件距布局上边界的距离。 android:marginRight:控件距布局右边界的距离。 android:marginBottom:控件距布局下边界的距离。 在表格布局管理器中,可以为单元格设置如下3种行为方式: Shrinkable:该列的所有单元格宽度可以被收缩,以保证该表格能适应父容器的宽度。 AbsoluteLayout 运行Android应用的手机往往千差万别,因此屏幕大小、分辨率都有可能有很大差异,使用绝对布局很难兼顾不同屏幕大小、分辨率问题,因此AbsoluteLayout布局已经过时
文章目录 LruCache 应用场景 LruCache 算法原理 LruCache 实现 LruCache 参考 LruCache 应用场景 ---- 1. 当需要使用某个数据时 , 将该数据写入缓存 , 此时先对内存使用情况进行一次判定 ; 如果内存不足 , 需要移除缓存数据中的部分内容 , 然后再将数据写入缓存 ; 当然 , 如果缓存内存足够 , 直接写入缓存即可 ; 3. 缓存中没有该元素 : 如果缓存中没有改元素 , 那么需要插入该元素 ; 3. 缓存空间是否已满 : 如果缓存空间满了 , 需要将队尾元素删除 , 将元素放在队首 ; 4. Android 中的 LruCache : 其缓存空间就是一个 LinkHashMap 链表 , 当调用 put 方法向其中放入新元素时 , 就会判断这个 LinkHashMap 链表是已满 , 如果没有空间 并保证其插入取出顺序的一致性 ; 当调用 get 方法获取其中的元素时 , 会将该元素提取到队头中 , 这符合了 LRU 算法的要求 ; LruCache 参考 ---- LruCache 参考 : ① Android
开发者可以直接在WebView中使用聚合(Polymer)和Material设计。 由于该应用需要访问互联网,所以需要在AndroidManifest.xml中配置: <uses-permission android:name="android.permission.INTERNET" 在JavaScript脚本中通过刚才暴露的name对象调用Android方法。 写一个在JavaScript中调用Android方法的实例,该实例界面包含一个WebView组件,用于显示HTML页面。 方法的功能,并将Android应用中的MyObject对象暴露给JavaScript脚本,暴露成JavaScript脚本中名为myObj的对象。 -- 注意此处的myObj是Android暴露出来的对象--> <input type="button" value="打招呼" onclick="myObj.showToast('<em>Android</em>
Java ME 移动设备开发; -- Android SDK : Android 开发; -- Flex AIR SDK : Adobe Flash 平台开发; -- Flexmojos SDK : Flex 编译和调试 SDK; -- Intelij Platform Plugin SDK : 用于开发 Intelij IDEA 的插件; (3) SDK 级别 SDK 级别 : -- 全局开发环境级别 Web 应用的工具, 可以使用 Java PHP JavaScript markUp 等语言; -- Android Moudle : Android 应用模块; -- Ruby Moudle : 提供创建 Ruby 工程的工具, 需要使用 Ruby 插件; -- Python Moudle : 提供 Python 开发的工具, 需要使用 Python 插件; (3) Moudle 目录结构解析 Android 可穿戴 和 电视支持 工程配置 : -- 设备类型选择 : 为了更容易跨平台开发, 工程向导提供了新的模板 为 Android 可穿戴 和 电视设备 创建你的应用; -- 版本选择 :
Android应用开发平台可以基于linux系统(如ubuntu),MAC OS,windows,但习惯上还是在windows下做应用开发,linux下作系统开发。 先讲windows下应用开发,linux下系统开发后续开展 随着android于2007上市推广一下,android应用开发环境也经历变变化。 下面简述三种应用开发环境的搭建: 方法一:自己安装JAVA库,ADT,android SDK,eclipse,早期的开发都是基于这种模式。记得在2011年在外实习,当初采用的就是这种方式。 选择 Android > Android Project, and 点击 Next 3. 在左边的工程类型列表选择Android Application选择,双击(或者点击右键选择new),创建一个新的启动项。 3. 输入启动项名称,同时输入工程名。