Microsoft Word - 第4章 Android生命周期.docx

Size: px
Start display at page:

Download "Microsoft Word - 第4章 Android生命周期.docx"

Transcription

1 Android 应用程序开发与典型案例 作者 : 华清远见 第 4 章 Android 生命周期 本章简介 经过上一章的学习, 主要了解了 Android 应用程序设计的基础知识, 对 Android 程序的开发有了一定的了解 在此基础上, 本章将对 Android 系统的进程优先级的 变化方式 Android 系统的 4 大基本组件 Activity 的生命周期中各个状态的变化关 系 Android 应用程序的调试方法和工具进行学习

2 4.1 程序生命周期 所谓的应用程序生命周期就是应用程序进程从创建到消亡的整个过程 在 Android 中, 多数情况下每个程序都是在各自独立的 Linux 进程中运行的 当一个程序或其某些部分被请求时, 它的进程就 出生 了 ; 当这个程序没有必要再运行下去且系统需要回收这个进程的内存用于其他程序时, 这个进程就 死亡 了 可以看出,Android 程序的生命周期是由系统控制而非程序自身直接控制 这和编写桌面应用程序时的思维有一些不同, 一个桌面应用程序的进程也是在其他进程或用户请求时被创建, 但是往往是在程序自身收到关闭请求后执行一个特定的动作 ( 如从 main 方法中 return) 而导致进程结束的 简而言之, 程序的生命周期是在 Android 系统中进程从启动到终止的所有阶段, 也就是 Android 程序启动到停止的全过程, 程序的生命周期是由 Android 系统进行调度和控制的 但是, 一个不容忽视的问题就是, 手机的内存是有限的, 随着打开的应用程序数量的增多, 随之而来的可能会是应用程序响应时间过长或者系统假死的糟糕情况 所以, 若将 Android 应用程序生命周期交由系统处理的话, 那么在系统内存不足的情况下, 便由 Android 系统舍车保帅, 选择性地来终止一些重要性较次的应用程序, 以便回收内存供更重要的应用程序使用 那么, 系统是根据一个什么样的重要性标准来终止 Android 应用程序的呢? Android 根据应用程序的组件及组件当前运行状态将所有的进程按重要性程度从高到低划分了五个优先级 : 前台进程 可见进程 服务进程 后台进程 空进程 图 4-1 Android 系统进程优先级以下就按优先级由高到低的顺序介绍 Android 系统中的进程 1. 前台进程前台进程是显示在屏幕最前端并与用户正在交互的进程, 是 Android 系统中最重要的进程, 包含以下 4 种情况 进程中的 Activity 正在与用户进行交互 进程服务被 Activity 调用, 而且这个 Activity 正在与用户进行交互 进程服务正在执行声明周期中的回调方法, 如 oncreate() onstart() 或 ondestroy() 进程的 BroadcastReceiver 正在执行 onreceive() 方法 Android 系统在多个前台进程同时运行时, 可能会出现资源不足的情况, 此时会清除部分前台进程, 保证主要的用户界面能够及时响应 2. 可见进程可见进程指部分程序界面能够被用户看见, 却不在前台与用户交互, 不响应界面事件 ( 其 onpause() 方法已被调用 ) 的进程 如果一个进程包含服务, 且这个服务正在被用户可见的 Activity 调用, 此进程同样被视为可见进程 2

3 Android 系统一般存在少量的可见进程, 只有在特殊的情况下,Android 系统才会为保证前台进程的资源而清除可见进程 3. 服务进程服务进程是指包含由 startservice() 方法启动服务的进程 它有以下特性 : 没有用户界面 ; 在后台长期运行 例如, 后台 MP3 播放器或后台上传下载数据的网络服务 Android 系统除非不能保证前台进程或可见进程所必要的资源, 否则不强行清除服务进程 4. 后台进程后台进程是指不包含任何已经启动的服务, 而且没有任何用户可见的 Activity 的进程 这些进程不直接影响用户的体验 Android 系统中一般存在数量较多的后台进程, 因此这些进程会被保存在一个列表中, 以保证在系统资源紧张时, 系统将优先清除用户较长时间没有见到的后台进程 5. 空进程空进程是不包含任何活跃组件的进程 一般保留这些进程, 是为了将其作为一个缓存, 在它所属的应用组件下一次需要时, 缩短启动的时间 空进程在系统资源紧张时会被首先清除, 但为了提高 Android 系统应用程序的启动速度,Android 系统会将空进程保存在系统内存中, 在用户重新启动该程序时, 空进程会被重新使用 问 : 除了以上的优先级外, 还有其他因素决定进程的优先级吗? 答 : 进程的优先级取决于所有组件中的优先级最高的部分 进程的优先级会根据与其他进程的依赖关系而变化 4.2 Android 组件 组件是可以调用的基本功能模块 Android 应用程序就是由组件组成的,Android 系统有 4 个重要的组件, 分别是 Activity Service BroadcaseReceiver 和 ContentProvider Activity 是 Android 程序的呈现层, 显示可视化的用户界面, 并接收与用户交互所产生的界面事件 在界面上的呈现形式就是全屏窗体 非全屏悬浮窗体的对话框, 与在桌面系统上的独立事业, 如办公应用等类似 Activities 是可执行的代码块, 由用户或者操作系统来进行初始实例化, 并在他们被需求时致以运行 Activities 可以与用户 请求数据或者其他 Activity Service 的服务通过 query 或 Intent 进行交互 大部分为 Android 编写的可执行代码将以 Activity 的形式执行 对于一个 Android 应用程序来说, 可以包含一个或多个 Activity, 一般在程序启动后会呈现一个 Activity, 用于提示用户程序已经正常启动 当它不积极运行时,Activity 可以被操作系统终止以节省内存 Service 用于没有用户界面, 但需要长时间在后台运行的应用 它类似于桌面应用或者服务器操作系统上的服务或守护进程 Service 是在后台运行的可执行的代码块, 从它被初始化一直运行到该程序关闭 一个 Service 的典型的例子是一个 MP3 播放器, 尽管用户已经使用其他应用程序, 但仍然需要持续播放文件 你的应用程序可能需要在没有用户界面的情况下一直执行 Service 来实现后台任务 Broadcast 和 Intent Receivers 对从其他的应用程序的服务请求做出一个全系统广播的响应, 这些广播响应可能来自于 Android 系统本身或者是任何在其系统上运行的程序 BroadcaseReceiver 是用来接受并响应广播消息的组件 它不包含任何用户界面, 但可以通过启动 Activity 或者 Notification 通知用户接收到重要信息 问 :Notification 如何提示用户? 3

4 答 : 闪动背景灯 振动设备 发出声音或在状态栏上放置一个持久的图标 Activity 或 Service 通过执行一个 IntentReceiver 为其他应用程序提供了访问其功能的功能 Intent Receiver 是一段可执行代码块, 对其他 Activity 的数据或服务请求做出响应 请求的 Activity( 客户端 ) 生成一个 Intent, 把其添加至 Android Framework 中, 来指出哪些应用程序 ( 目标程序 ) 接收并对其做出响应 Intent 是 Android 的主要构成元素之一, 它从现有的应用程序中创造新的应用程序 Intent 实现了应用程序和其他的应用程序和服务交换所需信息的功能 ContentProvider 是 Android 系统提供的一种标准的共享数据的机制, 应用程序可以通过 ContentProvider 访问其他应用程序的私有数据 ( 私有数据可以是存储在文件系统中的文件, 也可以是 SQLite 中的数据库 ) Android 系统内部也提供一些内置的 ContentProvider, 能够为应用程序提供重要的数据信息 所有 Android 组件都具有自己的生命周期, 是从组件建立到组件销毁的整个过程 在生命周期中, 组件会在可见 不可见 活动 非活动等状态中不断变化 4.3 Activity 生命周期 Activity 生命周期指 Activity 从启动到销毁的过程 Activity 表现为 4 种状态, 分别是活动状态 暂停状态 停止状态和非活动状态 活动状态,Activity 在用户界面中处于最上层, 完全能被用户看到, 能够与用户进行交互 暂停状态,Activity 在界面上被部分遮挡, 该 Activity 不再处于用户界面的最上层, 且不能够与用户进行交互 ; 或者屏幕被锁定 停止状态,Activity 在界面上完全不能被用户看到, 也就是说这个 Activity 被其他 Activity 全部遮挡 非活动状态, 不在以上 3 种状态中的 Activity 则处于非活动状态 这四种状态是可以相互转换的, 转换关系图如图 4-2 所示 图 4-2 Activity 的 4 种状态的转换关系图 图 4-3 解释了状态之间转化的可能路径 其中着色的椭圆表示活动的主要状态, 矩形表示当活动在状态之间转换时会被调用的回调方法 Android 调用以下的事件回调方法通知 Activity 从某一状态转变到另一状态 代码清单 4-1 事件的回调方法 public class MyActivity extends Activity { protected void oncreate(bundle savedinstancestate); protected void onstart(); protected void onrestart(); protected void onresume(); protected void onpause(); protected void onstop(); protected void ondestroy(); 4

5 表 4-1 对各个事件回调方法做出说明 表 4-1 Activity 生命周期的事件回调方法 图 4-3 Activity 活动周期 方法 oncreate() 是否可终止 否 说明 Activity 启动后第一个被调用的方法, 常用来进行 Activity 的初始化, 例如创建 View 绑定数据或恢复信息等 onstart() 否当 Activity 显示在屏幕上时, 该方法被调用 onrestart() 否当 Activity 从停止状态进入活动状态前, 调用该方法 onresume() 方法 否 是否可终止 当 Activity 能够与用户交互, 接收用户输入时, 该方法被调用 此时的 Activity 位于 Activity 栈的栈顶 说明 续表 onpause() 是 当 Activity 进入暂停状态时, 该方法被调用 一般用来保存持久的数据或释放占用的资源 onstop() 是当 Activity 进入停止状态时, 该方法被调用 ondestroy() 是在 Activity 被终止前, 即进入非活动状态前, 该方法被调用 onsaveinstancestate() onrestoreinstancestate() 否 否 Android 系统因资源不足终止 Activity 前调用该方法, 用以保存 Activity 的状态信息, 供 onrestoreinstancestate() 或 oncreate() 恢复之用 恢复 onsaveinstancestate() 保存的 Activity 状态信息, 在 onstart() 和 onresume () 之间被调用 5

6 Activity 事件回调方法的调用顺序, 如图 4-4 所示 图 4-4 Activity 事件回调方法的调用顺序 Activity 的生命周期可分为全生命周期 可视生命周期和活动生命周期 每个生命周期中包含不同的事件回调方法 全生命周期全生命周期是从 Activity 建立到销毁的全部过程, 始于 oncreate(), 结束于 ondestroy() 使用者通常在 oncreate() 中初始化用户界面, 分配引用类变量, 绑定数据控件, 并创建服务和线程等 Activity 所能使用的全局资源和状态, 并在 ondestroy() 中释放这些资源, 并确保所有外部连接被关闭, 例如, 网络或数据库的联系等 ; 在一些极端的情况下,Android 系统会不调用 ondestroy() 方法, 而直接终止进程 为了避免创造短期对象和增加垃圾收集的时间, 以致对用户体验产生直接影响 如果你的 Activity 需要创建一些对象的话, 最好在 oncreate 方法中创建, 因为它在一个 Actvity 的完整生命周期中仅调用一次 可视生命周期可视生命周期是 Activity 在界面上从可见到不可见的过程, 开始于 onstart(), 结束于 onstop() onstart() 一般用来初始化或启动与更新界面相关的资源 onstop() 一般用来暂停或停止一切与更新用户界面相关的线程 计时器和服务 onrestart() 方法在 onsart() 前被调用, 用来在 Activity 从不可见变为可见的过程中, 进行一些特定的处理过程 onstart() 和 onstop() 会被多次调用 onstart() 和 onstop() 也经常被用来注册和注销 BroadcastReceiver 或者传感器 在 onstart() 和 onstop() 这两个方法中间,Actvity 对用户将会是可见的, 尽管它可能部分被遮挡着 在一个 Activity 完整的生命周期中可能会经过几个 Activity 可见的生命周期, 因为 Activity 可能会经常在前台和后台之间切换 在极端情况下, 系统将销毁掉一个 Activity 即使它在可见状态并且不调用 onstop 方法 活动生命周期活动生命周期是 Activity 在屏幕的最上层, 并能够与用户交互的阶段, 开始于 onresume(), 结束于 onpause() 在 Activity 的状态变换过程中 onresume() 和 onpause() 经常被调用, 因此这两个方法中应使用更为简单 高效的代码 onpause() 是第一个被标识为 可终止 的方法 在 onpause() 返回后,onStop() 和 ondestroy() 随时能被 Android 系统调用 onpause() 常用来保存持久数据, 如界面上用户的输入信息等 6

7 当系统而不是用户关闭一个活动来节省内存时, 用户可能希望返回到活动且是它之前的状态 为了获得活动被关闭之前的状态, 可以执行活动的 onsaveinstancestate() 方法 Android 在活动容易被销毁前调用这个方法, 也就是调用 onpause() 之前 该方法的参数是一个 Bundle 对象, 这个对象可以名值对记录活动的动态状态 当活动再次启动时,Bundle 同时被传递到 oncreate() 和调用 oncreate() 之后的方法 onrestoreinstancestate() 因为 onsaveinstancestate() 方法不总被调用, 你应该仅使用 onsaveinstancestate() 来记录活动的临时状态, 而不是持久的数据 应该使用 onpause() 来存储持久数据 问 :onpause() 和 onsaveinstancestate() 这两个函数都可以用来保存界面的用户输入数据, 它们有什么区别呢? 答 : onpause() 一般用于保存持久性数据, 并将数据保存在存储设备上的文件系统或数据库系统中的 onsaveinstancestate() 主要用来保存动态的状态信息, 信息一般保存在 Bundle 中 Bundle 是能够保存多种格式数据的对象 onsaveinstancestate() 保存在 Bundle 中的数据, 系统在调用 onrestoreinstancestate() 和 oncreate() 时, 会同样利用 Bundle 将数据传递给函数 当一个活动启动另一个活动时, 这两个活动都经历生命周期转换 一个暂停或是停止, 然而被启动的活动则启动 有时, 这些活动可能需要协调 当这两个活动在同一个进程中, 生命周期的回调顺序是明确界定的 : 调用当前活动的 onpause() 方法 ; 然后, 按序调用启动活动的 oncreate() onstart() onresume() 方法 ; 之后, 如果该活动不需再在屏幕上可见, 则调用它的 onstop() 方法 下面我们就来详细学习一下关于 Android 如何管理多个 Activity (1)Android 用 Activity Stack 来管理多个 Activity, 因此, 同一时刻只会有最顶上的 Activity 是处于 active 或者 running 状态 其他的 Activity 都被压在下面 (2) 如果非活动的 Activity 仍是可见的 ( 如果上面压着的是一个非全屏的 Activity 或透明的 Activity), 它是处于 paused 状态的 在系统内存不足的情况下,paused 状态的 Activity 是有可能被系统销毁掉的 注意因为 Android 应用程序的生存期并不是由应用本身直接控制的, 而是由 Android 系统平台进行管理的, 所以, 对于开发者而言, 需要了解不同的组件 Activity Service 和 IntentReceiver 的生命, 切记 : 如果组件的选择不当, 系统很有可能会关闭一个正在进行重要工作的进程 4.4 Activity 启动模式 Activity 作为 Android 中重要一环, 它有 4 种不同的启动模式, 类似于 C 语言中的局部变量 全局变量及静态变量等 这 4 种启动模式如下 standard: 标准模式, 调用 startactivity() 方法就会产生一个新的实例 singletop: 检查是否已经存在了一个实例位于 Activity Stack 的顶部, 如果存在就不产生新的实例, 反之则调用 Activity 的 newinstance() 方法产生一个新实例 singletask: 在一个新的 Task 中产生这个实例, 以后每次调用都会使用此实例, 而避免产生新的实例 singleinstance: 这个基本上跟 singletask 一样, 只是有一点不同, 那就是在这个模式下的 Activity 实例所处的 Task 中, 只能有这一个 Activity 实例, 而不能有其他的实例 这些启动模式在 Android 清单文件 AndroidManifest.xml 中, 通过 <activity> 中的 launchmode 属性进行设置, 如代码清单 4-2 所示 代码清单 4-2 AndroidManifest.xml 7

8 <activity android:name=".activity2" android:launchmode="singletask"></activity> 也可以在 Eclipse ADT 图形界面中编辑, 如图 4-5 所示 图 4-5 设置 Activity 启动模式下面通过一个简单的例子 LaunchMode_Test 来对四种启动模式进行简要分析 在该例中涉及 Fx_Main Activity2 及 Activity3 三个 Activity 下面介绍一下例子中涉及的三个 Activity 及其界面 首先是 Fx_Main, 其界面如图 4-6 所示 图 4-6 Fx_Main 的界面 在图 4-6 所示的界面中, 单击 跳转到 AC2 按钮之后, 跳转至 Activity2, 具体代码如代码清单 4-3 所示 import android.app.activity; import android.content.intent; import android.os.bundle; import android.util.log; import android.view.view; import android.view.view.onclicklistener; import android.widget.button; import android.widget.textview; 代码清单 4-3 Fx_Main.Activity public class Fx_Main extends Activity { /** Called when the activity is first created. */ private Button b; protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); TextView tv=(textview)findviewbyid(r.id.textview01); tv.settext("main---->"+gettaskid()); Log.i("System.out", "Main---->"+this.toString()+"Task ID---->"+getTaskId()); b=(button)findviewbyid(r.id.button01); b.setonclicklistener(new OnClickListener(){ public void onclick(view v) { Intent i=new Intent(Fx_Main.this,Activity2.class); 8

9 ); startactivity(i); protected void ondestroy() { super.ondestroy(); Log.i("System.out", "Fx_Main--->Destory"); 其次是 Activity2, 其界面如图 4-7 所示 图 4-7 Activity2 的界面 在该界面中, 单击 跳回到 Main 按钮, 则跳转至 Fx_Main, 而单击 跳到本页面 则仍显示 Activity2 的界面, 单击 跳到 AC3 则跳转到 Activity3 的界面, 具体代码如代码清单 4-4 所示 import android.app.activity; import android.content.intent; import android.os.bundle; import android.util.log; import android.view.view; import android.view.view.onclicklistener; import android.widget.button; import android.widget.textview; 代码清单 4-4 Activity2.Activity public class Activity2 extends Activity { private Button b; private Button b2; private Button b3; protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity2); b=(button)findviewbyid(r.id.button02); b2=(button)findviewbyid(r.id.button03); b3=(button)findviewbyid(r.id.button04); TextView tv=(textview)findviewbyid(r.id.textview02); tv.settext("ac2---->"+gettaskid()); Log.i("System.out", "Ac2---->"+this.toString()+"Task ID---->"+getTaskId()); b.setonclicklistener(new OnClickListener(){ public void onclick(view v) { 9

10 Intent i=new Intent(Activity2.this,Fx_Main.class); startactivity(i); ); b2.setonclicklistener(new OnClickListener(){ public void onclick(view v) { Intent i=new Intent(Activity2.this,Activity2.class); startactivity(i); ); b3.setonclicklistener(new OnClickListener(){ public void onclick(view v) { ); Intent i=new Intent(Activity2.this,Activity3.class); startactivity(i); protected void ondestroy() { super.ondestroy(); Log.i("System.out", "Ac2--->destory"); 最后是 Activity3, 其界面如图 4-8 所示 图 4-8 Activity3 的界面 如图 4-8 所示, 单击 返回 Main 则跳转至 Fx_Main, 单击 返回 AC2, 则跳转到 Activity2 具体代码如代码清单 4-5 所示 import android.app.activity; import android.content.intent; import android.os.bundle; import android.util.log; import android.view.view; import android.view.view.onclicklistener; import android.widget.button; import android.widget.textview; 代码清单 4-5 Activity3.Activity 10

11 public class Activity3 extends Activity { private Button b; private Button b2; protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity3); b=(button)findviewbyid(r.id.button03); b2=(button)findviewbyid(r.id.button04); TextView tv=(textview)findviewbyid(r.id.textview03); tv.settext("ac3---->"+gettaskid()); Log.i("System.out", "Ac3---->"+this.toString()+"Task ID---->"+getTaskId()); b.setonclicklistener(new OnClickListener(){ public void onclick(view v) { Intent i=new Intent(Activity3.this,Fx_Main.class); startactivity(i); ); b2.setonclicklistener(new OnClickListener(){ ); public void onclick(view v) { Intent i=new Intent(Activity3.this,Activity2.class); startactivity(i); protected void ondestroy() { super.ondestroy(); Log.i("System.out", "Ac3--->Destory"); standard 标准模式 在 standard 模式也就是默认模式下, 不需要配置 launchmode 此时的 AndroidManifest.xml 如代码清单 4-6 所示 <?xml version="1.0" encoding="utf-8"?> 代码清单 4-6 AndroidManifest.xml <manifest xmlns:android=" package="feixun.com.jiang" android:versioncode="1" android:versionname="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".fx_main" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> <activity android:name=".activity2" android:label="@string/ac2"/ > <activity android:name=".activity3" android:label="@string/ac3/> </application> <uses-sdk android:minsdkversion="4" /> </manifest> 11

12 运行例子, 从 Fx_Main 开始, 一直点回到 Activity2 按钮时,Log 信息如图 4-9 所示 图 4-9 Standard 启动模式下 Log 信息发现每次都创建了 Activity2 的新实例 standard 的加载模式就是这样的,Intent 将发送给它新的 Activity 实例 现在点击 Android 设备的回退键, 可以看到 Log 信息按照刚才创建 Activity 实例的倒序依次出现, 类似退栈的操作, 而刚才操作跳转按钮的过程是压栈的操作 singletop singletop 和 standard 模式, 都会将 Intent 发送到新的实例 ( 如果已经有了,singleTask 模式和 singleinstance 模式不发送到新的实例 ) 不过,singleTop 要求如果创建 intent 时栈顶已经有要创建 Activity 的实例, 则将 Intent 发送给该实例, 而不发送给新的实例 还是用刚才的示例, 只需将 Activity2 的 launchmode 改为 singletop, 就能看到区别 修改后 AndroidManifest.xml 中代码如代码清单 4-7 所示 代码清单 4-7 AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android=" package="feixun.com.jiang" android:versioncode="1" android:versionname="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".fx_main" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> <activity android:name=".activity2" android:label="@string/ac2" android:launchmode="singletop"/ > <activity android:name=".activity3" android:label="@string/ac3/> </application> <uses-sdk android:minsdkversion="4" /> </manifest> 运行 Fx_Main, 跳转到 Activity2---->Actvity2 时会发现, 单击多少遍按钮, 都是相同的 Activity2 实例, 因为该实例在栈顶, 所以不会创建新的实例 如果回退, 回到 Fx_Main, 将退出应用, 如图 4-10 所示 图 4-10 singletop 模式下 跳转到 AC2 的 Log 信息 singletop 模式, 可用来解决栈顶多个重复相同的 Activity 的问题 如果是 Fx_Main 跳转到 Activity2, 再跳转到 Fx_Main, 行为就和 standard 一样了, 会在 Activity2 跳转到 Fx_Main 时创建 Fx_Main 的新实例, 因为当时的栈顶不是 Activity2 实例, 如图 4-11 所示 图 4-11 singletop 模式下 跳转到 AC2 后 跳回到 Main 的 Log 信息 12

13 4.4.3 singletask singletask 模式和后面的 singleinstance 模式都是只创建一个实例的 当 Intent 到来, 需要创建 singletask 模式 Activity 时, 系统会检查栈里面是否已经有该 Activity 的实例 如果有直接将 Intent 发送给它 ( 注意此时原在此 Activity 栈中上面的 Activity 将会被关闭 ) 把 Activity2 的启动模式改成 singletask, 修改后 AndroidManifest.xml 中代码如代码清单 4-8 所示 代码清单 4-8 AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android=" package="feixun.com.jiang" android:versioncode="1" android:versionname="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".fx_main" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> <activity android:name=".activity2" android:label="@string/ac2" android:launchmode="singletask"/ > <activity android:name=".activity3" android:label="@string/ac3/> </application> <uses-sdk android:minsdkversion="4" /> </manifest> 启动 Fx_Main, 跳转到 Activity2---->Activity3---->Actvity2, 此时看 Log 信息, 如图 4-12 所示 图 4-12 singletask 启动模式下 Log 信息可见从 AC3 再跳转到 AC2 时, 因为 AC2 之前在栈中是存在的所以不生成新的 AC2 实例, 而是在栈中找到此 AC2, 并将在 AC2 上面的 AC3 关闭, 所以此时栈中只有 Fx_Main 和 AC2, 在 AC2 点返回会直接退到 Fx_Main 然后退出 singleinstance 在 singleinstance 模式下, 加载该 Activity 时如果没有实例化, 它会在创建新的 Task 后, 实例化入栈, 如果已经存在, 则直接调用 onnewintent, 该 Activity 的 Task 中不允许启动其他的 Activity, 任何从该 Activity 启动的其他 Activity 都将被放到其他 Task 中, 先检查是否有在应用的 Task, 没有的话就创建 在这里介绍一下 Task( 任务 ) 的概念 按照字面意思, 任务就是自己要实现的一个目的, 而在 Android 中的 Task 的定义是一系列 Activity 的集合, 即要达到自己最终要到的 Actvity, 之前所有经历过的 Actvity 的集合 它可以是同一个应用内部的, 也可以是两个不同应用的 Task 可以认为是一个栈, 可放入多个 Activity 比如, 启动一个应用, 那么 Android 就创建了一个 Task, 然后启动这个应用的入口 Activity, 就是 intent-filter 中配置为 main 和 launch 的那个 这个 Activity 是根 (Root)Activity, 可能会在它的界面调用其他 Activity, 这些 Activity 如果按照上面那 3 个模式, 也会在这个栈 (Task) 中, 只是实例化的策略不同而已 把 Activity2 的启动模式改成 singleinstance, 修改后 AndroidManifest.xml 中代码如代码清单 4-9 所示 代码清单 4-9 AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android=" 13

14 package="feixun.com.jiang" android:versioncode="1" android:versionname="1.0"> <application <activity android:name=".fx_main" > <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> <activity android:name=".activity2" android:launchmode="singleinstance"/ > <activity android:name=".activity3" </application> <uses-sdk android:minsdkversion="4" /> </manifest> 然后进行测试, 启动 Fx_Main---->Actvity2---->Actvity3 然后看一下 Log 信息, 如图 4-13 所示 图 4-13 singleinstance 启动模式下 Log 信息可以看到 Fx_Main 以及 Activity3 的 Task ID 为 9, 而 Actvity2 的 Task ID 为 10, 此时在 Actvity3 单击 返回 按钮会发现先退到 Fx_Main, 继续返回会回到 Actvity2 最后退出 从该过程可以看出 : 如果从其他应用程序调用 singleinstance 模式的 Activity(Fx_Main), 从该 Activity 开启其他 Activity(Activity2) 时, 会创建一个新的 Task(Task ID 为 10 的那个 ), 实际上, 如果包含该 Activity(Activity2) 的 Task 已经运行的话, 他会在该运行的 Task 中重新创建 经过上述的介绍, 用下面的表格来进行一个简单的总结, 如表 4-2 所示 表 4-2 Activity4 种启动模式对比 区别 是否允许多个实例 如何决定所属 Task 是否每次都生成新实例 是否允许其他 Activity 存在于本 Task 内 standard 可被多次实例化, 同一个 Task 的不同的实例可位于不同的 Task 中, 每个 Task 也可包含多个实例 存放于 Start Activity() 的 Task 除非设置 FLAG_ ACTIVITY_NE W_TASK 标记 是 允许 singletop 同 standard 同 standard 如果寄存 Activity 的栈顶为该 Activity, 则直接用该 Activity 处理 ; 否则, 创建新实例 允许 singletask 不能有多个实例 由于该模式下 Activity 总是位于栈顶, 所以 Actvity 在同一个设备里最多只有一个实例 放入新的 Task 内, 并且位于该 Task 的根 只有在第一次才创建新的实例, 其他情况复用该 Activity 允许 如果存放 singletask 的栈寄存在 Task 内, 响应一个 Intent 时, 如果 singletask 位于栈顶, 则处理 Intent, 否则会丢失 Intent, 但该 Task 会处于前台 singleinstance 同 singletask 同 singletask 同 singletask 不允许 14

15 4.5 程序调试 Android 系统提供了两种调试工具 LogCat 和 DevTools, 用于定位 分析及修复程序中出现的错误 LogCat 命令行工具 LogCat 是可以显示在 Eclipse 集成开发环境中的用来获取系统日志信息的工具 它的主要功能就是能够捕获包括 Dalvik 虚拟机产生的信息 进程信息 ActivityManager 信息 PackagerManager 信息 Homeloader 信息 WindowsManager 信息 Android 运行时信息和应用程序信息等可被捕获的信息 1.LogCat 的使用方法打开方式 : 选择 Window Show View Other 命令, 打开 Show View 的选择菜单, 然后在 Andoird LogCat 中选择 LogCat 打开 LogCat 后, 它便显示在 Eclipse 的下方区域, 其界面如图 4-14 所示 图 4-14 LogCat 界面从图中我们可以看到 LogCat 的右上方有 5 个不同的字母, 这 5 个字母分别表示 5 种不同类型的日志信息, 它们的级别依次增高, 表示含义如下 V: 详细 (Verbose) 信息 D: 调试 (Debug) 信息 I: 通告 (Info) 信息 W: 警告 (Warn) 信息 E: 错误 (Error) 信息 在 LogCat 中, 用户可以通过 5 个字母图标选择显示的信息类型, 级别高于所选类型的信息也会在 LogCat 中显示, 但级别低于所选类型的信息则不会被显示 同时,LogCat 提供了 过滤 功能, 在右上角的 + 号和 - 号, 分别是添加和删除过滤器 用户可以根据日志信息的标签 (Tag) 产生日志的进程编号(Pid) 或信息等级 (Level), 对显示的日志内容进行过滤 2. 程序调试原理 引入 android.util.log 包 使用 Log.v() Log.d() Log.i() Log.w() 和 Log.e() 5 个方法在程序中设置 日志点 Log.v() 用来记录详细信息 Log.d() 用来记录调试信息 Log.i() 用来记录通告信息 Log.w() 用来记录警告信息 Log.e() 用来记录错误信息 当程序运行到 日志点 时, 应用程序的日志信息便被发送到 LogCat 中 判断 日志点 信息与预期的内容是否一致 进而判断程序是否存在错误 下面的例子演示了 Log 类的具体使用方法 代码清单 4-10 LogCat.java 15

16 package com.example.logcat; import android.app.activity; import android.os.bundle; import android.util.log; public class LogCat extends Activity { final static String TAG = "LOGCAT"; public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); Log.v(TAG,"Verbose"); Log.d(TAG,"Debug"); Log.i(TAG,"Info"); Log.w(TAG,"Warn"); Log.e(TAG,"Error"); 在本段代码中, 程序第 5 行 import android.util.log; 引入 android.util.log 包 ; 第 8 行定义标签, 标签帮助用户在 LogCat 中找到目标程序生成的日志信息, 同时也能够利用标签对日志进行过滤 ; 第 14 行记录一个详细信息,Log.v() 方法的第一个参数是日志的标签, 第二个参数是实际的信息内容 ; 第 15~18 行分别产生了调试信息 通告信息 警告信息和错误信息 最终运行结果如图 4-15 所示, 从图中还可以看出 LogCat 对不同类型的信息使用了不同的颜色加以区别 图 4-15 LogCat 工程的运行结果 3. 添加过滤器上文中提到 LogCat 提供了 过滤 功能, 下面就来介绍一下 LogCat 是如何添加过滤器的 首先, 单击右上角的 +, 在弹出的对话框中填入过滤器的名称 :LogcatFilter, 设置过滤条件为 标签 =LOGCAT 即可, 操作方法如图 4-16 所示 图 4-16 添加过滤器 经过上述过滤器过滤后, 无论什么类型的日志信息, 属于哪一个进程, 只要标签为 LogCat, 都将显示在 LogcatFilter 区域内 LogCat 过滤后的输入结果如图 4-17 所示 16

17 图 4-17 LogCat 过滤后的输入结果 DevTools 开发调试工具 DevTools 是用于调试和测试的工具, 它包括了如下所示一系列各种用途的用户小工具 :Development Settings Exception Browser Google Login Service Instrumentation Media Scanner Package Browser Pointer Location Raw Image Viewer Running processes 和 Terminal Emulator 如图 4-18 所示, 为 DevTools 使用时的界面 由使用时的界面也可以看出其中的各个小工具 图 4-18 DevTools 的使用界面以下着重讲解 Dev Tools 的一些小工具 1.Development Settings Development Settings 中包含了程序调试的相关选项, 单击功能前面的选择框, 出现绿色的 对号 表示功能启用, 模拟器会自动保存设置 图 4-19 显示了 Development Settings 的运行界面 17

18 图 4-19 Development Settings 运行界面下面就详细介绍 Development Settings 中各个选项的含义, 如表 4-3 所示 表 4-3 Development Settings 中各选项的含义 选项 说明 Debug App Wait for debugger Show running processes Show screen updates No App Process limit Immediately destroy activities Show CPU usage Show background Show Sleep state on LED Windows Animation Scale Transition Animation Light Hinting Show GTalk service connection status 为 Wait for debugger 选项指定应用程序, 如果不指定 ( 选择 none), Wait for debugger 选项将适用于所有应用程序 Debug App 可以有效地防止 Android 程序长时间停留在断点而产生异常 阻塞加载应用程序, 直到关联到调试器 (Debugger) 用于在 Activity 的 oncreate() 方法的进行断点调试 在屏幕右上角显示运行中的进程 选中该选项时, 界面上任何被重绘的矩形区域会闪现粉红色, 有利于发现界面中不必要的重绘区域 允许同时运行进程的数量上限 Activity 进入停止状态后立即销毁, 用于测试在方法 onsaveinstancestate() onrestoreinstancestate() 和 oncreate() 中的代码 在屏幕顶端显示 CPU 使用率, 上层红线显示总的 CPU 使用率, 下层绿线显示当前进程的 CPU 使用率 应用程序没有 Activity 显示时, 直接显示背景面板, 一般这种情况仅在调试时出现 在休眠状态下开启 LED 窗口动画规模 转换动画 轻显示 显示 GTalk 服务连接状态 2.Pointer Location Pointer Location 是屏幕点位置查看工具, 能够显示触摸点的 X 轴坐标和 Y 轴坐标, 如图 4-20 所示 图 4-20 Pointer Location 的使用画面 3.Running processes Running processes 能够查看在 Android 系统中正在运行的进程, 并能查看进程的详细信息, 包括进程名称和进程所调用的程序包 18

19 图 4-21 Andoird 模拟器默认情况下运行的进程和 com.android.phone 进程的详细信息 4.Terminal Emulator Terminal Emulator 可以打开一个连接底层 Linux 系统的虚拟终端, 但具有的权限较低, 且不支持提升权限的 su 命令 如果需要使用 root 权限的命令, 可以使用 ADB 工具 图 4-22 是 Terminal Emulator 运行时的画面, 输入 ls 命令, 显示出根目录下的所有文件夹 图 4-22 Terminal Emulator 运行时的画面 4.6 本章小结 本章主要介绍了 Android 系统的进程优先级排序 不同优先级进程之间的变化方式,Android 系统的 4 大基本组件及其用途,Activity 的生命周期中各个状态及状态间的变化关系 Android 应用程序的调试方法和工具 关键知识点测评 1. 以下有关 Android 系统进程优先级的说法, 不正确的一个是 ( ) A. 前台进程是 Android 系统中最重要的进程 B. 空进程在系统资源紧张时会被首先清除 C. 服务进程没有用户界面并且在后台长期运行 19

20 D.Android 系统中一般存在数量较多的可见进程 2. 以下有关 Android 组件的叙述, 正确的一个是 ( ) A.Service 是 Android 程序的呈现层 B.BroadcaseReceiver 本身包含界面, 用于通知用户接收到重要信息 C. 应用程序可以通过 ContentProvider 访问其他应用程序的私有数据 D. 不是所有的 Android 组件都具有自己的生命周期 3. 以下有关 Activity 生命周期的描述, 不正确的是 ( ) A.Activity 的状态之间是可以相互转换的 B.Activity 的全生命周期是从 Activity 建立到销毁的全部过程, 始于 oncreate(), 结束于 ondestroy() C. 活动生命周期是 Activity 在屏幕的最上层, 并能够与用户交互的阶段 D.onPause() 函数在 Android 系统因资源不足终止 Activity 前调用 联系方式 集团官网 : 嵌入式学院 : 移动互联网学院 : 企业学院 : 物联网学院 : 研发中心 :dev.hqyj.com 集团总部地址 : 北京市海淀区西三旗悦秀路北京明园大学校内华清远见教育集团 北京地址 : 北京市海淀区西三旗悦秀路北京明园大学校区, 电话 : /5 上海地址 : 上海市徐汇区漕溪路 250 号银海大厦 11 层 B 区, 电话 : 深圳地址 : 深圳市龙华新区人民北路美丽 AAA 大厦 15 层, 电话 : 成都地址 : 成都市武侯区科华北路 99 号科华大厦 6 层, 电话 : 南京地址 : 南京市白下区汉中路 185 号鸿运大厦 10 层, 电话 : 武汉地址 : 武汉市工程大学卓刀泉校区科技孵化器大楼 8 层, 电话 : 西安地址 : 西安市高新区高新一路 12 号创业大厦 D3 楼 5 层, 电话 :

res/layout 目录下的 main.xml 源码 : <?xml version="1.0" encoding="utf 8"?> <TabHost android:layout_height="fill_parent" xml

res/layout 目录下的 main.xml 源码 : <?xml version=1.0 encoding=utf 8?> <TabHost android:layout_height=fill_parent xml 拓展训练 1- 界面布局 1. 界面布局的重要性做应用程序, 界面是最基本的 Andorid 的界面, 需要写在 res/layout 的 xml 里面, 一般情况下一个 xml 对应一个界面 Android 界面布局有点像写 html( 连注释代码的方式都一样 ), 要先给 Android 定框架, 然后再在框架里面放控件,Android 提供了几种框架,AbsoluteLayout,LinearLayout,

More information

<4D F736F F D20B5DA32D5C220416E64726F6964BFAAB7A2BBB7BEB3B4EEBDA82E646F6378>

<4D F736F F D20B5DA32D5C220416E64726F6964BFAAB7A2BBB7BEB3B4EEBDA82E646F6378> Android 应用程序开发与典型案例 作者 : 华清远见 第 2 章 Android 开发环境搭建 本章简介 本章主要介绍在 Windows 环境下,Android 开发环境的搭建步骤及注意事项, 包括 JDK 和 Java 开发环境的安装和配置 Eclipse 的安装 Android SDK 和 ADT 的安装和配置等 ; 同时介绍了 Android 开发的基本步骤 2.1 Android 开发环境的安装与配置

More information

Android Robert C.C. Huang Oscar F.Y. Liu Peter C.L. Hsieh 2011/03/21

Android Robert C.C. Huang Oscar F.Y. Liu Peter C.L. Hsieh 2011/03/21 Android Robert C.C. Huang Oscar F.Y. Liu Peter C.L. Hsieh 2011/03/21 Outlines for Today Future Planning Review System Architecture Dev. Tools & Making the First App Project Structure & File Details Application

More information

Microsoft Word - 第1章 Android基本概念.docx

Microsoft Word - 第1章 Android基本概念.docx Android 系 统 下 Java 编 程 详 解 作 者 : 华 清 远 见 第 1 章 Android 基 本 概 念 本 章 简 介 本 章 主 要 介 绍 Android 基 本 概 念 方 面 的 内 容, 包 括 Android 平 台 特 性 Android 系 统 架 构 Android 开 发 框 架 和 Android 开 发 环 境 搭 建 1.1 Android 简 介 Android

More information

01_Service

01_Service 移动平台应用软件开发 Service 主讲 : 张齐勋 zhangqx@ss.pku.edu.cn 移动平台应用软件开发 课程建设小组 北京大学 二零一七年 什么是 Service 与 Activity 一样, 同属 Android 基本组件 后台运行, 不与用户交互, 没有可视化界面 最常见的 Service 如 : 在后台播放歌曲 后台执行文件的下载 同样需在 AndroidManifest.xml

More information

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP:  ******************* * 关于 Java 测试试题 ****** ******************* * 关于 Java 测试试题 ******************* 問 1 运行下面的程序, 选出一个正确的运行结果 public class Sample { public static void main(string[] args) { int[] test = { 1, 2, 3, 4, 5 ; for(int i = 1 ; i System.out.print(test[i]);

More information

ShareText

ShareText 作者 : 林致宇 日期 :2012/1/23 問題 : 如何分享分享文字資訊給其它的應用程式? 解答 : 有時候我們可能會希望 我們的應用程式的資訊 能夠讓使用者分享出去, 讓使用者能夠將此資訊傳送簡訊給其好友或寄電子郵件的方式寄給其好友, 這份文件將示範如何寫出這樣的應用程式 本文件將產出兩個 App, 第一個 App 是 分享資料的來源, 名為 CopyPaste_Source, 功能非常簡單,

More information

Android Service

Android Service Android Service- 播放音樂 建國科技大學資管系 饒瑞佶 2013/7 V1 Android Service Service 是跟 Activity 並行 一個音樂播放程式若沒使用 Service, 即使按 home 鍵畫面離開之後, 音樂還是照播 如果再執行一次程式, 新撥放的音樂會跟先前撥放的一起撥, 最後程式就會出錯 執行中的程式完全看不到! 但是, 寫成 Service 就不同了

More information

手册 doc

手册 doc 1. 2. 3. 3.1 3.2 3.3 SD 3.4 3.5 SD 3.6 3.7 4. 4.1 4.2 4.3 SD 4.4 5. 5.1 5.2 5.3 SD 6. 1. 1~3 ( ) 320x240~704x288 66 (2G SD 320x2401FPS ) 32M~2G SD SD SD SD 24V DC 3W( ) -10~70 10~90% 154x44x144mm 2. DVR106

More information

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 odps-sdk 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基 开放数据处理服务 ODPS SDK SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基础功能的主体接口, 搜索关键词 "odpssdk-core" 一些

More information

Microsoft Word - 第1章 Android基本概念.docx

Microsoft Word - 第1章 Android基本概念.docx Android 应用程序开发与典型案例 作者 : 华清远见 第 1 章 Android 基本概念 本章目标 本章介绍 Android 基本概念方面的内容, 包括 Android 平台特性 Android 系 统架构 Android 开发框架以及 OMS 介绍 1.1 Android 简介 Android 一词的本义指 机器人, 它是由 Google 公司于 2007 年 11 月推出的基于 Linux

More information

Agilent N5700 N5741A-49A, N5750A-52A, N5761A-69A, N5770A-72A W 1500 W 600 V 180 A 1 U Vac AC LAN,USB GPIB Agilent N5700 1U 750W 1500W 24

Agilent N5700 N5741A-49A, N5750A-52A, N5761A-69A, N5770A-72A W 1500 W 600 V 180 A 1 U Vac AC LAN,USB GPIB Agilent N5700 1U 750W 1500W 24 Agilent N700 N71A-9A, N70A-2A, N761A-69A, N770A-72A 2 70 W 100 W 600 V 180 A 1 U 8-26 Vac AC LAN,USB GPIB Agilent N700 1U 70W 100W 2 6V 600V 1.A 180A N700 1U 19 100W LED N700 OVP UVL UVL OVP N700 GPIB

More information

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new ListView 自訂排版 主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new int[]{r.drawable.dog1, R.drawable.dog2,

More information

题目

题目 开发 Android 应用 目的 : 帮助大家了解 Android 平台开发 作者 : 王威威 技术爱好 : linux,qt, 嵌入式开发 MSN : wangweiweicdma@hotmail.com Email : wang.weiwei1@ztenc.com.cn wangjiecdma@126.com 下载开发资源 1 下载最新的 Android SDK http://code.google.com/android/download.html

More information

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页 第 1 页共 32 页 crm Mobile V1.0 for IOS 用户手册 一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页 二 crm Mobile 界面介绍 : 第 3 页共 32 页 三 新建 (New) 功能使用说明 1 选择产品 第 4 页共 32 页 2 填写问题的简要描述和详细描述 第 5 页共

More information

單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e

單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e Android Studio Debugging 本篇教學除了最基本的中斷點教學之外, 還有條件式中斷的教學 條件式中斷是進階的除錯技巧, 在某些特定情況中, 我們有一個函數可能會被呼叫數次, 但是我們只希望在某種條件成立時才進行中斷, 進而觀察變數的狀態 而條件式中斷這項技巧正是符合這項需求 本教學分兩部分 單步除錯 (Page2~11, 共 10) 條件式中斷點 (Page12~17, 共 6)

More information

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double

More information

Lecture01_Android介绍

Lecture01_Android介绍 移动平台应用软件开发 Android 介绍 主讲 : 张齐勋 zhangqx@ss.pku.edu.cn 移动平台应用软件开发 课程建设小组 北京大学 二零一七年秋北京 Android是什么 Android不仅仅是一个操作系统 它更是一个完整的软件框 架 Android基于Linux内核 2005年Google公司收购了Android公司 Google公司选择使用Apache许可证开放Android源码

More information

用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應

用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應 專題進度 老師 : 趙啟時老師 學生 : 陳建廷 2013/10/13 用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應 程式碼 : package com.example.phone; import java.util.arraylist;

More information

教案模板4-2

教案模板4-2 传智播客 Android 移动应用基础教程 教学设计 课程名称 : Android 移动应用基础教程授课年级 : 2015 年级授课学期 : 2015 学年第一学期教师姓名 : 某某老师 2014 年 10 月 09 日 课题名称第 3 章 Activity 计划学时 8 学时 内容分析 在现实生活中, 经常会使用手机进行打电话 发短信 玩游戏等, 这就需要与手机界 面进行交互 在 Android

More information

F515_CS_Book.book

F515_CS_Book.book /USB , ( ) / L R 1 > > > 2, / 3 L 1 > > > 2 + - 3, 4 L 1 了解显示屏上显示的图标 Wap 信箱收到一条 Wap push 信息 ( ) GSM 手机已连接到 GSM 网络 指示条越多, 接收质量越好 2 ...........................4.............................. 4 Micro SD (

More information

0511-Android程式之GPS應用_專題週記4

0511-Android程式之GPS應用_專題週記4 逢甲大學通訊工程學系專題研究 Android 程式之 GPS 應用 專題週記 0511 學生姓名 陳彥儒 D0035131 廖元譽 D0077791 指導老師 楊豐瑞老師繳交日期 2014.05.11 1 匯入 GoogleMap 1.1 取得授權步驟 目前進度 取得 Google 授權鑰匙 實作程式尚未成功 1.1.1 建立個人的 keystore 1.1.2 由個人的 keystore 查詢 SHA1

More information

预览图 : (2) 在 SelectCity.java 中增加控件, 用于绑定 select_city 文件的 ListView, TextView,EditTest 等控件 代码和注释如下 :

预览图 : (2) 在 SelectCity.java 中增加控件, 用于绑定 select_city 文件的 ListView, TextView,EditTest 等控件 代码和注释如下 : EditText 实现城市搜索 1801210778 邹宇航 摘要 : 使用 EditText 实现搜索城市的功能, 以此为依据更新 ListView 1. 效果图 : 2. 主要步骤 (1) 在 select-city.xml 布局文件中中添加 EditText 控件用作搜索框, 然后添加 ListView 控件用来显示城市名字内容 代码如下 : 预览图 : (2) 在 SelectCity.java

More information

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例 帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例 这篇文章主要介绍了帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例, 本文还详细介绍了帝国 CMS 数据库类中的一些常用方法, 需要的朋友可以参考下 例 1: 连接 MYSQL 数据库例子 (a.php)

More information

1

1 内 容 提 要 作 为 Google 开 发 的 全 新 开 源 手 机 平 台,Android 发 展 如 火 如 荼 本 书 通 过 大 量 代 码 秘 诀 全 面 详 尽 地 讲 述 了 Android 开 发 技 术 从 activity 和 intent 基 础 知 识 开 始, 到 线 程 服 务 broadcast receiver 以 及 alert 警 告 框, 再 到 用 户 界

More information

1. 请描述下Activity的生命周期。

1.    请描述下Activity的生命周期。 1. 请描述下 Activity 的生命周期 必调用的三个方法 :oncreate() --> onstart() --> onresume(), 用 AAA 表示 (1) 父 Activity 启动子 Activity, 子 Actvity 退出, 父 Activity 调用顺序如下 AAA --> onfreeze() --> onpause() --> onstop() --> onrestart()

More information

<4D6963726F736F667420576F7264202D20BBF9D3DA416E64726F6964C6BDCCA8B5C4B5E7D7D3C5C4C2F4CFB5CDB32E646F63>

<4D6963726F736F667420576F7264202D20BBF9D3DA416E64726F6964C6BDCCA8B5C4B5E7D7D3C5C4C2F4CFB5CDB32E646F63> 基 于 Android 平 台 的 电 子 拍 卖 系 统 摘 要 本 电 子 拍 卖 系 统 其 实 就 是 一 个 电 子 商 务 平 台, 只 要 将 该 系 统 部 署 到 互 联 网 上, 客 户 都 可 以 在 该 系 统 上 发 布 想 出 售 的 商 品, 也 可 以 对 拍 卖 中 的 商 品 参 与 竞 价 整 个 过 程 无 须 人 工 干 预, 由 系 统 自 动 完 成 本

More information

Android 编程基础 Android 开发教程 & 笔记 1

Android 编程基础 Android 开发教程 & 笔记 1 Android 开发教程 & 笔记 1 多式样 ProgressBar 撰写 : 地狱怒兽 联系 :zyf19870302@126.com 普通圆形 ProgressBar 该类型进度条也就是一个表示运转的过程, 例如发送短信, 连接网络等等, 表示一个过程正 在执行中 一般只要在 XML 布局中定义就可以了

More information

<4D F736F F D20B5DA32D5C2A1A2416E64726F6964BFAAB7A2BBB7BEB3B4EEBDA8>

<4D F736F F D20B5DA32D5C2A1A2416E64726F6964BFAAB7A2BBB7BEB3B4EEBDA8> 2 Android Windows Android JDK Java Eclipse Android SDK ADT Android 2.1 Android Android 应用软件开发需要的开发环境如表 2-1 所示 表 2-1 所需项 版本需求 说明 备注 操作系统 Windows XP/Vista/7 Mac OS X10..8+ 选择自己最熟悉的操作系统 Linux Ubuntu Drapper

More information

Lecture01_Android介绍

Lecture01_Android介绍 移动平台应用软件开发 Android 介绍 主讲 : 张齐勋 zhangqx@ss.pku.edu.cn 移动平台应用软件开发 课程建设小组 北京大学 二零一八年秋北京 Android 是什么 Android 不仅仅是一个操作系统, 它更是一个完整的软件框架 Android 基于 Linux 内核 2005 年 Google 公司收购了 Android 公司 Google 公司选择使用 Apache

More information

DU Ad Platform_SDK 安卓接入指南 DU Ad Platform_SDK for Android 接入手册 ( 触发式广告 ) DUAd_SDK_Trigger v1.0 百度在线网络技术 ( 北京 ) 有限公司 百度在线网络技术 ( 北京 ) 有限公司 - 1 -

DU Ad Platform_SDK 安卓接入指南 DU Ad Platform_SDK for Android 接入手册 ( 触发式广告 ) DUAd_SDK_Trigger v1.0 百度在线网络技术 ( 北京 ) 有限公司 百度在线网络技术 ( 北京 ) 有限公司 - 1 - DU Ad Platform_SDK for Android 接入手册 ( 触发式广告 ) DUAd_SDK_Trigger v1.0-1 - 目录 1. 获取身份... 1 2. 加载与配置... 2 2.1 加载 SDK 文件... 2 2.2 配置 AndroidManifest.xml... 2 2.3 混淆代码... 3 3. 初始化... 4 4. 功能使用... 4 第 1 页共 1

More information

書面

書面 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 5.4 互動功能畫面 程式碼請參考附件-程式三 在進入互動頁面時 會執行setAllText()依寵物狀態數值來 設定狀態文字與頭像 並且依心情決定是否要不要播放音效 觸摸的區域 由於是自己寫的 view 所以並未透過xml來設置 而是透過Layut.addview()來動態新增

More information

Android 开发教程

Android 开发教程 封面 1 Android 模拟器 模拟器参数 参数格式 emulator [option] [-qemu args] option 选项 -sysdir 为模拟器在 目录中搜索系统硬盘镜像 -system 为模拟器从 文件中读取初始化系统镜像 -datadir 设置用户数据写入的目录 -kernel 为模拟器设置使用指定的模拟器内核

More information

建模与图形思考

建模与图形思考 F06_c 观摩 :ContentProvider 基於軟硬整合觀點 架构與 DB 引擎移植方法 ( c) By 高煥堂 4 通用性基类 ContentProvider 基於軟硬整合觀點 的使用范例 刚才的范例里, 我们直接使用 DataPersist 类的接口来与 SQLite 沟通 本节将替 DataPersist 配上 ContentProvider 基类, 让 Client 能透过 ContentProvider

More information

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d

More information

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 月 3 日 1 1 INPUTOUTPUT 1 InputOutput 题目描述 用 cin 输入你的姓名 ( 没有空格 ) 和年龄 ( 整数 ), 并用 cout 输出 输入输出符合以下范例 输入 master 999 输出 I am master, 999 years old. 注意 "," 后面有一个空格,"." 结束,

More information

03 开发入门.key

03 开发入门.key #3 手机应用开发入门 刘宁 Email:liuning2@mail.sysu.edu.cn 大纲» Android 基本概念» 开发包及 工具安装» 创建 HelloWorld» Android 程序设计基础 2 Android 开发基本概念» Activities» Intents» 视图与控件 ( 界 面元素 )» 异步调 用 ( 多线程 支持 )» 后台服务 3 Activities Android

More information

手说TTS开发指南

手说TTS开发指南 手说 TTS 开发指南 v1.3 2011 年 6 月 版权所有 : 手说工作室 shoushuo.com 版本时间作者说明 1.0 2010-11-15 张波 1.1 2010-12-27 在 ondestroy 方法 unbindservice 1.2 2010-12-30 1.3 2011-6-12 去掉 TTS 初始化 ; ttsservice.initialize() 方法调用添加接口方法

More information

<C8EBC3C5C6AAA3A8B5DA31D5C2A3A92E696E6464>

<C8EBC3C5C6AAA3A8B5DA31D5C2A3A92E696E6464> 第 1 章 进入 Photoshop 的全新世界 本章导读 Photoshop 1 1.1 Photoshop CS6 Photoshop Photoshop 1.1.1 Photoshop POP 1-1 图 1-1 平面广告效果 1.1.2 Photoshop 1-2 Photoshop CS6 Photoshop CS6 Photoshop CS6 Extended 3D 3 Photoshop

More information

幻灯片 1

幻灯片 1 Delivering accurate maps to Chinese Android users 为中国安卓用户提供准确的地图服务 Work at Mapbox includes: Android apps, demos, starter kits, documentation, support, syncing Android team with other departments, etc.

More information

为什么引入 Intent Android 应 用程序的四 大组件 Activities Services Content Providers Broadcast Receivers 解决 Android 应用的各项组件之间的通讯 Activity Service Intent Broadcast R

为什么引入 Intent Android 应 用程序的四 大组件 Activities Services Content Providers Broadcast Receivers 解决 Android 应用的各项组件之间的通讯 Activity Service Intent Broadcast R 移动平台应用软件开发 Intent( 意图 ) 主讲 : 张齐勋 zhangqx@ss.pku.edu.cn 移动平台应用软件开发 课程建设小组北京大学二零一五年 为什么引入 Intent Android 应 用程序的四 大组件 Activities Services Content Providers Broadcast Receivers 解决 Android 应用的各项组件之间的通讯 Activity

More information

// HDevelopTemplateWPF projects located under %HALCONEXAMPLES%\c# using System; using HalconDotNet; public partial class HDevelopExport public HTuple

// HDevelopTemplateWPF projects located under %HALCONEXAMPLES%\c# using System; using HalconDotNet; public partial class HDevelopExport public HTuple halcon 与 C# 混合编程之 Halcon 代码调用 写在前面 完成 halcon 与 C# 混合编程的环境配置后, 进行界面布局设计构思每一个按钮所需要实现 的功能, 将 Halcon 导出的代码复制至相应的 C# 模块下即可 halcon 源程序 : dev_open_window(0, 0, 512, 512, 'black', WindowHandle) read_image (Image,

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 The BitCoin Scripting Language 交易实例 交易结构 "result": { "txid": "921a dd24", "hash": "921a dd24", "version": 1, "size": 226, "locktime": 0, "vin": [ ], "vout": [ ], "blockhash": "0000000000000000002c510d

More information

Database_001

Database_001 作者 : 林致宇日期 :2011/10/26 主要參考來源 : http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applicat ions/ 問題 : 如在存取一個已經建立好的資料庫? 解答 : 有一些應用程式會需要讀取已經建立好的資料庫, 例如一個試題測驗應用程式, 裡面的試題可能已經於電腦上, 使用任何的

More information

Android 框架虚拟化实战 董福源 360 手机卫士 2017.thegiac.com

Android 框架虚拟化实战 董福源 360 手机卫士 2017.thegiac.com Android 框架虚拟化实战 董福源 360 手机卫士 什么是虚拟化 原生 apk 在封闭系统内 免安装运行 Android 系统的一种沙箱技术 技术架构 Sandbox apps Android OS 目录 Sandbox apps Android OS Activity 插件化 只能启动 Manifest 中声明的 activity 占坑方案 欺骗 AMS Activity 启动过程 ContentImpl

More information

建模与图形思考

建模与图形思考 C03_c 基 於 軟 硬 整 合 觀 點 JNI: 从 C 调 用 Java 函 数 ( c) By 高 煥 堂 3 How-to: 基 於 軟 硬 整 合 觀 點 从 C 调 用 Java 函 数 如 果 控 制 点 摆 在 本 地 C 层, 就 会 常 常 1. 从 本 地 C 函 数 去 调 用 Java 函 数 ; 2. 从 本 地 C 函 数 去 存 取 Java 层 对 象 的 属 性

More information

第一章 Android 简介与开发环境搭建

第一章 Android 简介与开发环境搭建 安卓开发环境与常用布局 第一章 Android 简介与开发环境搭建 本章目标 3G 的概念 Android 的改变 Android 开发环境的搭建编写第一个 Android 程序 Android 程序的目录结构 手机发展史 1. 3G 的概念 3G 全称为 :3rd Generation, 中文含义即为第三代数字通信, 是指将无线通信与国际互联网等多媒体通信结合的新一代移动通信系统 2. 符合 3G

More information

六域链联盟 SDChain-Matrix 节点搭建指南 2018/07/26 Version : 1.0.0

六域链联盟 SDChain-Matrix 节点搭建指南 2018/07/26 Version : 1.0.0 SDChain-Matrix 节点搭建指南 目录 1 环境要求... 3 2 软件下载... 4 3 安装部署... 4 3.1 部署可执行程序目录... 4 3.2 部署配置文件目录... 4 3.3 部署数据库文件目录... 4 3.4 部署日志文件目录... 4 3.5 部署依赖库文件目录... 4 4 配置参数... 5 5 启动运行... 7 5.1 普通模式启动... 7 5.2 加载启动模式...

More information

Android Android Android SDK iv

Android Android Android SDK iv Android Market Google Android SDK Apple Google Microsoft b2c b 2010 Internet Android how why iii Android 240... Android Android SDK iv Android Market Google Android SDK Visual C++ Java N-tier J2EE Unix/Linux

More information

_banneradview.settest(true); _banneradview.setuserkeywords("swimming"); _banneradview.setusercategories("1,3,4"); _banneradview.setusergender(jdbanner

_banneradview.settest(true); _banneradview.setuserkeywords(swimming); _banneradview.setusercategories(1,3,4); _banneradview.setusergender(jdbanner 京东 APP 联盟 SDK Android 版接口说明文档 1.0 1. 嵌入 SDK 1.1 添加 SDK Android Studio 环境 : 菜单 New->New Module->Import.jar or.aar package, 然后选中 App 联盟 SDK 所带的 jar 文件 Eclipse+ADT 环境 : 将 App 联盟 SDK 所带的 jar 文件拷贝到 libs/ 目录下

More information

本章学习目标 小风 Java 实战系列教程 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc

本章学习目标 小风 Java 实战系列教程 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc 本章学习目标 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 配置视图解析器 @RequestMapping 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc 和 Struts2 都属于表现层的框架, 它是 Spring 框架的一部分, 我们可 以从 Spring 的整体结构中看得出来 :

More information

中 文 摘 要 智 慧 型 手 機 由 於 有 強 大 的 功 能, 以 及 優 渥 的 便 利 性, 還 能 與 網 路 保 持 隨 時 的 鏈 結 與 同 步 更 新, 因 此 深 受 廣 大 消 費 者 喜 愛, 當 然, 手 機 遊 戲 也 成 為 現 代 人 不 可 或 缺 的 娛 樂 之

中 文 摘 要 智 慧 型 手 機 由 於 有 強 大 的 功 能, 以 及 優 渥 的 便 利 性, 還 能 與 網 路 保 持 隨 時 的 鏈 結 與 同 步 更 新, 因 此 深 受 廣 大 消 費 者 喜 愛, 當 然, 手 機 遊 戲 也 成 為 現 代 人 不 可 或 缺 的 娛 樂 之 臺 北 市 大 安 高 級 工 業 職 業 學 校 資 訊 科 一 百 零 一 學 年 度 專 題 製 作 報 告 ------ 以 Android 製 作 ------ ----- 連 線 塔 防 遊 戲 ------ Tower defense game using Internet technology 班 級 : 資 訊 三 甲 組 別 : A9 組 組 員 : 葉 冠 麟 (9906129)

More information

Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7.

Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7. Kubernetes 包管理理 工具 Helm 蔺礼强 Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7. Kubernetes

More information

Microsoft Word - install_manual-V _CN.docx

Microsoft Word - install_manual-V _CN.docx NO TASK Q-Sign Install Manual PAGE 1/28 Q-Sign INSTALL MANUAL Version 3.0 Server Manager Client Codec NO TASK Q-Sign Install Manual PAGE 2/28 History DATE Contents Name Ver. Remark 2009-02-11 Q-Sign Ver.

More information

新・解きながら学ぶJava

新・解きながら学ぶJava 481! 41, 74!= 40, 270 " 4 % 23, 25 %% 121 %c 425 %d 121 %o 121 %x 121 & 199 && 48 ' 81, 425 ( ) 14, 17 ( ) 128 ( ) 183 * 23 */ 3, 390 ++ 79 ++ 80 += 93 + 22 + 23 + 279 + 14 + 124 + 7, 148, 16 -- 79 --

More information

教育部補助資訊軟體人才培育先導計畫 100 年度課程發展專案計畫 實驗課程名稱 : IPC(Inter-Process Communication) 開發教師 : 張晉源老師 開發學生 : 林政揚 學校系所 : 樹德科技大學資訊工程學系

教育部補助資訊軟體人才培育先導計畫 100 年度課程發展專案計畫 實驗課程名稱 : IPC(Inter-Process Communication) 開發教師 : 張晉源老師 開發學生 : 林政揚 學校系所 : 樹德科技大學資訊工程學系 教育部補助資訊軟體人才培育先導計畫 100 年度課程發展專案計畫 實驗課程名稱 : IPC(Inter-Process Communication) 開發教師 : 張晉源老師 開發學生 : 林政揚 (s11639104@stu.edu.tw) 學校系所 : 樹德科技大學資訊工程學系 實驗目的 本實驗的目的在於讓同學們可以了解 Android 系統核心內部的行程通訊的原理, 透過呼叫系統提供的其中一樣服務

More information

第 6 章 BroadcastReceiver( 广播接收者 ) 学习目标 掌握广播接收者的创建, 以及如何自定义广播 ; 掌握有序广播和无序广播的使用, 能够对有序广播进行拦截 在 Android 系统中, 广播是一种运用在应用程序之间传递消息的机制, 例如电池电量低时会发送一条提示广播 要过滤并

第 6 章 BroadcastReceiver( 广播接收者 ) 学习目标 掌握广播接收者的创建, 以及如何自定义广播 ; 掌握有序广播和无序广播的使用, 能够对有序广播进行拦截 在 Android 系统中, 广播是一种运用在应用程序之间传递消息的机制, 例如电池电量低时会发送一条提示广播 要过滤并 第 6 章 BroadcastReceiver( 广播接收者 ) 学习目标 掌握广播接收者的创建, 以及如何自定义广播 ; 掌握有序广播和无序广播的使用, 能够对有序广播进行拦截 在 Android 系统中, 广播是一种运用在应用程序之间传递消息的机制, 例如电池电量低时会发送一条提示广播 要过滤并接收广播中的消息就需要使用 BroadcastReceiver( 广播接收者 ), 广播接收者是 Android

More information

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入 100 年 特 種 考 試 地 方 政 府 公 務 人 員 考 試 試 題 等 別 : 三 等 考 試 類 科 : 資 訊 處 理 科 目 : 系 統 分 析 與 設 計 一 請 參 考 下 列 旅 館 管 理 系 統 的 使 用 案 例 圖 (Use Case Diagram) 撰 寫 預 約 房 間 的 使 用 案 例 規 格 書 (Use Case Specification), 繪 出 入

More information

建立Android新專案

建立Android新專案 Android 智 慧 型 手 機 程 式 設 計 Android WebService 建 國 科 技 大 學 資 管 系 饒 瑞 佶 2012/4 V1 2012/8 V2 2013/5 V3 2014/10 v4 提 醒 這 節 的 內 容 針 對 的 是 MS 的 Web Service 或 是 使 用 SOAP(Simple Object Access Protocol) 標 準 建 立

More information

腾讯社交广告转化追踪 Android SDK 接入说明文档 V1.2

腾讯社交广告转化追踪 Android SDK 接入说明文档 V1.2 腾讯社交广告转化追踪 Android SDK 接入说明文档 V1.2 文档 腾讯社交广告转化追踪 Android SDK 接入说明文档 V1.2 必读 1. SDK 嵌入 1.1 步骤 1: 添加 SDK 到工程中 1.2 步骤 2: 修改 AndroidManifest.xml 文件 2. 接入代码 2.1 激活事件统计接口 2.1.1 接入代码示例 2.1.2 激活事件主要 API 2.2 更多转化类型统计接口

More information

掌盟 SoEasy SDK 开发者帮助文档 1. 接入前项目检查 根据游戏接入后出现的问题, 对游戏项目做以下几点要求 : a) AndroidManifest.xml 中 android:targetsdkversion="19" b) 如果 AndroidManifest.xml 有 insta

掌盟 SoEasy SDK 开发者帮助文档 1. 接入前项目检查 根据游戏接入后出现的问题, 对游戏项目做以下几点要求 : a) AndroidManifest.xml 中 android:targetsdkversion=19 b) 如果 AndroidManifest.xml 有 insta 1. 接入前项目检查 根据游戏接入后出现的问题, 对游戏项目做以下几点要求 : a) AndroidManifest.xml 中 android:targetsdkversion="19" b) 如果 AndroidManifest.xml 有 installlocation 选项时, 参数设置为 auto c) AndroidManifest.xml 中的 Activity 需要进行如下配置 android:configchanges="keyboardhidden

More information

ltu

ltu 資 訊 管 理 系 學 齡 前 自 主 學 習 之 行 動 裝 置 輔 助 系 統 指 導 教 授 : 李 靜 怡 教 授 組 員 名 單 : 蔡 承 育 988C012 黃 佳 誼 988C026 鄭 亦 琦 988C060 廖 曼 伶 988C108 中 華 民 國 1 0 2 年 5 月 嶺 東 科 技 大 學 資 訊 管 理 系 學 齡 前 自 主 學 習 之 行 動 裝 置 輔 助 系 統

More information

Guava学习之Resources

Guava学习之Resources Resources 提供提供操作 classpath 路径下所有资源的方法 除非另有说明, 否则类中所有方法的参数都不能为 null 虽然有些方法的参数是 URL 类型的, 但是这些方法实现通常不是以 HTTP 完成的 ; 同时这些资源也非 classpath 路径下的 下面两个函数都是根据资源的名称得到其绝对路径, 从函数里面可以看出,Resources 类中的 getresource 函数都是基于

More information

untitled

untitled JavaEE+Android - 6 1.5-2 JavaEE web MIS OA ERP BOSS Android Android Google Map office HTML CSS,java Android + SQL Sever JavaWeb JavaScript/AJAX jquery Java Oracle SSH SSH EJB+JBOSS Android + 1. 2. IDE

More information

获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复

获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复 获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复 获取将导致上次获取的 access_token 失效 接入方可以使用 AppID 和 AppSecret

More information

Microsoft PowerPoint - 03 开发入门.ppt [兼容模式]

Microsoft PowerPoint - 03 开发入门.ppt [兼容模式] 手 机 应 用 平 台 软 件 开 发 3 开 发 入 门 刘 宁 Email:liuning2@mail.sysu.edu.cn 课 程 简 介 课 程 目 标 Android 开 发 准 备 工 作 开 发 包 及 工 具 安 装 创 建 HelloWorld Android 程 序 设 计 基 础 创 意 移 动 应 用 创 意 移 动 应 用 创 意 移 动 应 用 创 意 移 动 应 用

More information

吉林大学学报 工学版 244 第 4 卷 复杂 鉴于本文篇幅所限 具体公式可详见参考文 献 7 每帧的动力学方程建立及其解算方法如图 3 所示 图4 滚转角速度与输入量 η 随时间的变化波形 Fig 4 Waveform of roll rate and input η with time changing 图5 Fig 5 滚转角随时间的变化波形 Waveform of roll angle with

More information

Microsoft Word - 第3章 Activity.doc

Microsoft Word - 第3章 Activity.doc 第 3 章 Activity 学习目标 u 掌握 Activity 的生命周期 u 掌握 Activity 的四种启动模式 u 掌握显式意图和隐式意图的使用 u 学会使用 Intent 传递数据在现实生活中, 经常会使用手机进行打电话 发短信 玩游戏等, 这就需要与手机界面进行交互 在 Android 系统中, 用户与程序的交互是通过 Activity 完成的 同时 Activity 也是 Android

More information

RxJava

RxJava RxJava By 侦跃 & @hi 头 hi RxJava 扩展的观察者模式 处 观察者模式 Observable 发出事件 Subscriber 订阅事件 bus.post(new AnswerEvent(42)); @Subscribe public void onanswer(answerevent event) {! }! Observable observable = Observable.create(new

More information

移动终端开发与应用

移动终端开发与应用 移动终端开发与应用 第一节 Android 系统的信使 :Intent 2 Intent 概述 Android 系统从诞生之初就不允许直接访问 4 大组件 (Activity Service Broadcast Receiver 和 Content Provider) 而是通过 Intent 对象来跟各种组件进行交互 Intent 对象被应用于 4 大组件中的 3 个 (Activity Service

More information

Chapter #

Chapter # 第三章 TCP/IP 协议栈 本章目标 通过本章的学习, 您应该掌握以下内容 : 掌握 TCP/IP 分层模型 掌握 IP 协议原理 理解 OSI 和 TCP/IP 模型的区别和联系 TCP/IP 介绍 主机 主机 Internet TCP/IP 早期的协议族 全球范围 TCP/IP 协议栈 7 6 5 4 3 应用层表示层会话层传输层网络层 应用层 主机到主机层 Internet 层 2 1 数据链路层

More information

无类继承.key

无类继承.key 无类继承 JavaScript 面向对象的根基 周爱 民 / aimingoo aiming@gmail.com https://aimingoo.github.io https://github.com/aimingoo rand = new Person("Rand McKinnon",... https://docs.oracle.com/cd/e19957-01/816-6408-10/object.htm#1193255

More information

Microsoft Word - A201103-528_1299547322.doc

Microsoft Word - A201103-528_1299547322.doc 5 10 15 20 25 30 基 于 Android 平 台 的 人 机 交 互 的 研 究 与 实 现 郁 亚 男 ( 北 京 邮 电 大 学 软 件 学 院, 北 京 100876) 摘 要 : 随 着 计 算 的 发 展, 计 算 变 得 越 来 越 自 由, 在 资 源 使 用 方 面 也 越 来 越 灵 活 移 动 终 端 由 于 无 线 通 信 网 络 传 输 速 率 的 提 高,

More information

Microsoft Word zw

Microsoft Word zw 第 1 章 Android 概述 学习目标 : Android Android Android Studio Android Android APK 1.1 1. 智能手机的定义 Smartphone 2. 智能手机的发展 1973 4 3 PC IBM 1994 IBM Simon PDA PDA Zaurus OS 1996 Nokia 9000 Communicator Nokia 9000

More information

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 -> 目录 1 大概思路... 1 2 创建 WebAPI... 1 3 创建 CrossMainController 并编写... 1 4 Nuget 安装 microsoft.aspnet.webapi.cors... 4 5 跨域设置路由... 4 6 编写 Jquery EasyUI 界面... 5 7 运行效果... 7 8 总结... 7 1 1 大概思路 创建 WebAPI 创建 CrossMainController

More information

chap07.key

chap07.key #include void two(); void three(); int main() printf("i'm in main.\n"); two(); return 0; void two() printf("i'm in two.\n"); three(); void three() printf("i'm in three.\n"); void, int 标识符逗号分隔,

More information

TD

TD *TD-000212-05* 20- 应用实例 4 本例显示的是使用两个亚低 音扬声器和多个顶箱的双声 道 立体声 设置 除了各声道都增加了一个顶 箱外 也可以增加更多的顶 箱 本例和例 3 的情况一 致 声道 2 或 右声道 声道 1 或 左声道 要接到更多的顶箱 将最后 一个顶箱的全幅线路输出接 头处的线缆接到下一个顶箱 的全幅线路输入接头 在不 降低信号质量的情况下 最

More information

机关团体 31 的步子迈得更实更好 报告 审议通过 中国共产党如皋市 落实到党的建设各个方面 以良好作风保障经济社会又好 十一届代表第四次会议决议 经济技术开发区 城北街 又快发展 省委督导组副组长汪以力到会指导 南通市委 道 如皋工业园区 如城街道 白蒲镇 搬经镇 市发改 督导组组长葛维先出席会议

机关团体 31 的步子迈得更实更好 报告 审议通过 中国共产党如皋市 落实到党的建设各个方面 以良好作风保障经济社会又好 十一届代表第四次会议决议 经济技术开发区 城北街 又快发展 省委督导组副组长汪以力到会指导 南通市委 道 如皋工业园区 如城街道 白蒲镇 搬经镇 市发改 督导组组长葛维先出席会议 30 如皋年鉴 2015 机 关 团 体 基地退出机制 村 庄 土 地 整 理 稳 步 推 进 全 市 累 计 退 出 中共如皋市委员会 综 述 概况 2014年 市委以党的群众路线教育实践活动为 1076户 复垦建设用地59 2公顷 有序实施土地增值收 益分配机制 扎实开展农村土地承包经营权确权登记颁证 工作 市农村产权交易服务中心建成运行 党的建设 2014 年 市委始终坚持党要管党 从严治 契机

More information

目 錄 版 次 變 更 記 錄... 2 原 始 程 式 碼 類 型 之 使 用 手 冊... 3 一 安 裝 軟 體 套 件 事 前 準 備... 3 二 編 譯 流 程 說 明... 25 1

目 錄 版 次 變 更 記 錄... 2 原 始 程 式 碼 類 型 之 使 用 手 冊... 3 一 安 裝 軟 體 套 件 事 前 準 備... 3 二 編 譯 流 程 說 明... 25 1 科 技 部 自 由 軟 體 專 案 原 始 程 式 碼 使 用 手 冊 Source Code Manual of NSC Open Source Project 可 信 賴 的 App 安 全 應 用 框 架 -App 應 用 服 務 可 移 轉 性 驗 證 Trusted App Framework -Transferability Verification on App MOST 102-2218-E-011-012

More information

基于Cortex-A8 Android&Linux系统与应用开发

基于Cortex-A8 Android&Linux系统与应用开发 安 全 提 示 非 常 感 谢 您 选 购 联 创 中 控 ( 北 京 ) 科 技 有 限 公 司 的 产 品, 在 首 先 打 开 包 装 箱 后 请 依 据 产 品 清 单 检 查 配 件, 若 发 现 产 品 主 配 件 有 损 坏 或 缺 失, 请 尽 快 与 您 的 经 销 商 或 技 术 支 持 联 络 产 品 使 用 前, 务 必 先 阅 读 本 手 册 实 验 平 台 须 使 用 配

More information

<4D F736F F D20B5DA33D5C220BFAAB7A2B9A4BEDF455643B5C4CAB9D3C32E646F6378>

<4D F736F F D20B5DA33D5C220BFAAB7A2B9A4BEDF455643B5C4CAB9D3C32E646F6378> Windows CE 嵌入式开发标准教程 作者 : 华清远见 第 3 章开发工具 EVC 的使用 本章目标 EVC 全称是 Embedded Visual C++, 即嵌入式可视化 C++ 编程工具 它是 Visual C++ 的嵌入式版 本,Windows CE 应用程序的开发工具 本章主要介绍 EVC 的安装过程,EVC 补丁包 SP4 的安装过程以 及 SDK 的安装过程, 另外还介绍了平台模拟器的使用方法及辅助开发工具的使用方法

More information

Android Fragment

Android Fragment Android Fragment 建國科技大學資管系饒瑞佶 2017/10 V1 Android 3.0 後才支援 Fragment 解決部分 App 適應螢幕大小的問題 它類似於 Activity, 可以像 Activity 可以擁有自己的版面設計, 也和 Activity 一樣有自己的生命週期 ( 具備 oncreate() oncreateview() 與 onpause() 方法 ) LifeCycle

More information

2 第 章 绪 论 Internet 2.0 使 得 消 费 型 电 子 产 品 用 户 可 以 通 过 多 种 不 同 的 数 据 网 络 访 问 互 联 网 内 容 用 户 可 以 使 用 便 携 式 消 费 型 电 子 设 备, 如 智 能 手 机 触 屏 平 板 电 脑 电 子 书, 甚 至

2 第 章 绪 论 Internet 2.0 使 得 消 费 型 电 子 产 品 用 户 可 以 通 过 多 种 不 同 的 数 据 网 络 访 问 互 联 网 内 容 用 户 可 以 使 用 便 携 式 消 费 型 电 子 设 备, 如 智 能 手 机 触 屏 平 板 电 脑 电 子 书, 甚 至 . Android 是 什 么 第 章 绪 论 2 3 本 章 将 主 要 介 绍 Android 操 作 系 统, 这 些 背 景 知 识 可 以 帮 你 更 好 地 理 解 本 书 的 内 容 你 将 了 解 到, 这 一 平 台 在 如 今 以 便 携 式 消 费 型 电 子 设 备 为 基 础 的 Internet 2.0 环 境 下 是 如 何 大 显 身 手 的 这 里 所 说 的 Internet

More information

使用 Eclipse 开发 Java EE 应用 (Web 应用 ) 这里以开发一个简单的 Web 应用为例, 介绍使用 Eclipse 开发 Java EE 应用的一般步 骤 此处使用的 Eclipse 是 Eclipse IDE for Java EE Developers; 如果是使用的其他

使用 Eclipse 开发 Java EE 应用 (Web 应用 ) 这里以开发一个简单的 Web 应用为例, 介绍使用 Eclipse 开发 Java EE 应用的一般步 骤 此处使用的 Eclipse 是 Eclipse IDE for Java EE Developers; 如果是使用的其他 使用 Eclipse 开发 Java EE 应用 (Web 应用 ) 这里以开发一个简单的 Web 应用为例, 介绍使用 Eclipse 开发 Java EE 应用的一般步 骤 此处使用的 Eclipse 是 Eclipse IDE for Java EE Developers; 如果是使用的其他 Eclipse 插件 ( 比如 MyEclipse 插件 ), 其开发方式和步骤可能略有差异和不同 在该例中,

More information

Microsoft Word - Hibernate与Struts2和Spring组合指导.doc

Microsoft Word - Hibernate与Struts2和Spring组合指导.doc 1.1 组合 Hibernate 与 Spring 1. 在 Eclipse 中, 新建一个 Web project 2. 给该项目增加 Hibernate 开发能力, 增加 Hibernate 相关类库到当前项目的 Build Path, 同时也提供了 hibernate.cfg.xml 这个配置文件 3. 给该项目增加 Spring 开发能力, 增加 spring 相关类库到当前项目的 Build

More information

专注于做最好的嵌入式计算机系统供应商

专注于做最好的嵌入式计算机系统供应商 专注于做最好的嵌入式计算机系统供应商 基于 ARMSYS2440/2410 开发应用程序 (EVC&VS2005) Rev 1.0 2008 年 3 月 24 日 杭州立宇泰电子有限公司 HangZhou LiYuTai Elec.Co.,Ltd 开发应用程序的过程一般分两步, 第一步在 PC 机开发环境下设计和编译应用程序, 第二步将它下载到 目标系统, 也就是我们的 ARMSYS2440 平台上运行

More information

<4D6963726F736F667420506F776572506F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>

<4D6963726F736F667420506F776572506F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074> 程 序 设 计 实 习 INFO130048 3-2.C++ 面 向 对 象 程 序 设 计 重 载 继 承 多 态 和 聚 合 复 旦 大 学 计 算 机 科 学 与 工 程 系 彭 鑫 pengxin@fudan.edu.cn 内 容 摘 要 方 法 重 载 类 的 继 承 对 象 引 用 和 拷 贝 构 造 函 数 虚 函 数 和 多 态 性 类 的 聚 集 复 旦 大 学 计 算 机 科 学

More information

拦截器(Interceptor)的学习

拦截器(Interceptor)的学习 二 拦截器 (Interceptor) 的学习 拦截器可以监听程序的一个或所有方法 拦截器对方法调用流提供了细粒度控制 可以在无状态会话 bean 有状态会话 bean 和消息驱动 bean 上使用它们 拦截器可以是同一 bean 类中的方法或是一个外部类 下面介绍如何在 Session Bean 类中使用外部拦截器类 @Interceptors 注释指定一个或多个在外部类中定义的拦截器 下面拦截器

More information

FPGAs in Next Generation Wireless Networks WPChinese

FPGAs in Next Generation Wireless Networks WPChinese FPGA 2010 3 Lattice Semiconductor 5555 Northeast Moore Ct. Hillsboro, Oregon 97124 USA Telephone: (503) 268-8000 www.latticesemi.com 1 FPGAs in Next Generation Wireless Networks GSM GSM-EDGE 384kbps CDMA2000

More information

Android线程和进程

Android线程和进程 Android 进程和线程 版权声明 华清远见教育集团版权所有 ; 未经华清远见明确许可, 不得为任何目的以任何形式复制或传播此文档的任何部分 ; 本文档包含的信息如有更改, 恕不另行通知 ; 华清远见教育集团保留所有权利 Android 进程和线程 在安装 Android 应用程序的时候,Android 会为每个程序分配一个 Linux 用户 ID, 并设置相应的权限, 这样其它应用程序就不能访问此应用程序所拥有的数据和资源了

More information

输入 project name 选择完成

输入 project name 选择完成 JAVA 程序访问 HighGo DB 的环境准备 山东瀚高科技有限公司版权所有仅允许不作任何修改的转载和转发 Hibernate 的配置 MyEclipse 中创建新项目 : 选择菜单栏 file---new---project 选择 web project 进行下一步 输入 project name 选择完成 4. 单击 " 添加 JAR/ 文件夹 ", 会如下图出现 JDBC 下载 Hibernate

More information

epub83-1

epub83-1 C++Builder 1 C + + B u i l d e r C + + B u i l d e r C + + B u i l d e r C + + B u i l d e r 1.1 1.1.1 1-1 1. 1-1 1 2. 1-1 2 A c c e s s P a r a d o x Visual FoxPro 3. / C / S 2 C + + B u i l d e r / C

More information

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6 www.brainysoft.net 1.JasperReport ireport...4 1.1 JasperReport...4 1.2 ireport...4 2....4 2.1 JDK...4 2.1.1 JDK...4 2.1.2 JDK...5 2.1.3 JDK...5 2.2 ant...6 2.2.1 ant...6 2.2.2 ant...6 2.3 JasperReport...7

More information

ChinaBI企业会员服务- BI企业

ChinaBI企业会员服务- BI企业 商业智能 (BI) 开源工具 Pentaho BisDemo 介绍及操作说明 联系人 : 杜号权苏州百咨信息技术有限公司电话 : 0512-62861389 手机 :18616571230 QQ:37971343 E-mail:du.haoquan@bizintelsolutions.com 权限控制管理 : 权限控制管理包括 : 浏览权限和数据权限 ( 权限部分两个角色 :ceo,usa; 两个用户

More information

C++ 程序设计 告别 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 告别 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1 1 TEMPLATE 1 Template 描述 使用模板函数求最大值 使用如下 main 函数对程序进行测试 int main() { double a, b; cin >> a >> b; cout c >> d; cout

More information

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

KillTest 质量更高 服务更好 学习资料   半年免费更新服务 KillTest 质量更高 服务更好 学习资料 http://www.killtest.cn 半年免费更新服务 Exam : 310-065Big5 Title : Sun Certified Programmer for the Java 2 Platform, SE 6.0 Version : Demo 1 / 14 1. 35. String #name = "Jane Doe"; 36. int

More information

Microsoft Word - 第1章 绪论.docx

Microsoft Word - 第1章 绪论.docx Windows CE 嵌入式开发标准教程 作者 : 华清远见 第 1 章绪论 本章目标 本章概述了嵌入式操作系统的概念 系统特性和 Windows CE 操作系统的发展 历史 开发特性以及开发流程 通过本章的学习, 读者将会掌握以下内容 了解嵌入式操作系统的基本特点了解 Windows CE 操作系统的发展历史掌握 Windows CE 操作系统的主要特性掌握 Windows CE 的开发特点掌握

More information

Chapter 16 Widget 作者 : 林致孙 不少 Android 手機在使用者剛購買時, 手機的桌面上就已經有不少的小工具 (Widget), 有些可以即時顯示氣候資訊, 有些則可以顯示最新股票資訊 本章將 利用兩個例子來說明 Widget 是如何設計的 16.1 時辰顯示小工具 在 An

Chapter 16 Widget 作者 : 林致孙 不少 Android 手機在使用者剛購買時, 手機的桌面上就已經有不少的小工具 (Widget), 有些可以即時顯示氣候資訊, 有些則可以顯示最新股票資訊 本章將 利用兩個例子來說明 Widget 是如何設計的 16.1 時辰顯示小工具 在 An Chapter 16 Widget 作者 : 林致孙 不少 Android 手機在使用者剛購買時, 手機的桌面上就已經有不少的小工具 (Widget), 有些可以即時顯示氣候資訊, 有些則可以顯示最新股票資訊 本章將 利用兩個例子來說明 Widget 是如何設計的 16.1 時辰顯示小工具 在 Android 開發者網站, 已針對 Widget 的開發提供了一份詳細的文件 [1], 本章大部份的內容皆是參考該文件而製作的,

More information

Microsoft Word - 在VMWare-5.5+RedHat-9下建立本机QTopia-2.1.1虚拟平台a.doc

Microsoft Word - 在VMWare-5.5+RedHat-9下建立本机QTopia-2.1.1虚拟平台a.doc 在 VMWare-5.5+RedHat-9 下建立 本机 QTopia-2.1.1 虚拟平台 张大海 2008-5-9 一 资源下载 1. 需要以下安装包 : tmake-1.13.tar.gz qtopia-free-source-2.1.1.tar.gz qt-embedded-2.3.10-free.tar.gz qt-x11-2.3.2.tar.gz qt-x11-free-3.3.4.tar.gz

More information