Adobe Flash Builder 4.5 Android Air 程序开发系列 之四 打开与关闭应用程序是的保存数据
2011年09月04日
在Android 系统中,每一个应用程序,也称为活动,被赋予了唯一的用户ID而在自己的进程中运行。系统本身,或者叫活动管理器,来
维护应用程序的周期和一个公用的活动栈。
每一个应用程序的生命周期有3个阶段,活动或者运行,暂停 和 停止。AIR的应用程序和其他的应用程序是一样的。因为应用程序有一个
有限的周期,所以他可以存储数据。Android 提供了sqlite 数据库,或者是内部状态,是一些简单 的name/value 键值对。
AIR 使用自己的API来保存数据。AIR有自己的Sqllite 引擎,和文件系统的权限。也提供了Local shared object ,一个像cookies 的解决方案。
这一讲中,将讲述这些概念。
AIR 应用程序
NativeApplication 代表了你的AIR应用程序。他在flash.desktop.pakage 中,继承自EventDispatcher。他采用单例模式,在程序加载后被自动
创建。你可以用静态方法 NativeApplication.nativeApplication获取一个引用的实例.
他还可以触发应用程序类型的事件,比不invoke和exiting 以及一些应用程序的特殊属性,比如icon 和 systemIdleMode.有些属性是为
AIR 的桌面程序创建的,不提供在移动应用程序中,比如:activewindow 或者是opendwindows,因为移动设备中没有多个窗口。
应用程序的打开
在点击图标后,你的程序开始运行,而当前运行的程序被移动到后台运行。AIR开发的应用程序与其他程序之间的导航是相同的,可以
可以任意切换。
Android 没有提供应用程序的启动界面。所以程序的启动时一个黑色的背景。测试你的应用程序,如果启动的时间很长,你必须重写
你的启动模块。有一个变通,你的根应用程序必须是一个简单的加载indicator 图片。程序加载是,注册ADDED_TO_STATE 事件,使用loader 记载你自己的
Application 。
程序默认是没有全屏显示的,你可以通过设置应用程序配置 来使之全屏显示true。
应用程序的关闭
当其他程序被选择,AIR 程序其实是在后台运行,而不是关闭。对于AIR ,NativeApplication 将会触发exiting 事件和closing 事件。你可以注册该事件,一遍在应用程序关闭的时候做一些自己的工作。
import flash.desktop.NativeApplication;
import flash.events.Event;
NativeApplication.nativeApplication.dispatchEvent(Event.EXITING.onExit);
function onExit(event:Event):void
{
//save application's current state
}
在android 中,【Settings】|【Aplications】|【Manager applications】 强制关闭应用程序,在AIR中可以是使用一下代码强制关闭应用程序
NativeApplication.nativeApplication.exit();
后天运行与前台运行当应用程序转到前天或者后台运行,NativeApplication 都会触发事件。如下:
NativeApplication.nativeApplication.addEventListerner(Event.ACTIVATE,onActivate);
NativaApplication.nativeApplication.addEventListerner(Event.DEACTIVATE,onDeactivate);
在 Flash Player 10.1 中 和AIR2.0 中,为了考虑到内存和电池的使用寿命,做了部分改进。当应用程序在不在激活状态,程序将进入到睡眠模式,停止rendering 和 刷新的频率降低到4fpps。为什么是使用4,这个数字是socket 连接必须的。如果你的AIR 程序不需要持久的socket连接,你可以将这个值设为0。
stage.frameRate=0;
有些是需要保持的状态,如视屏。这个示例展示了怎么样play和暂停正在播放的视屏。
import falsh.desktop.NatvieaApplication;
import flash.events.Event;
import flash.media.Video;
import flash.media.NetConnection;
import flash.media.NetStream;
NativeApplication.nativeApplication.addEventListener(Event.ACTIVATE,onActivate);
NativeApplication.nativeApplication.aadEventListener(Event.DEACTIVATE,onDeActivate);
var video:Video=new Video(640,270);
var nc:NetConnection=new NetConnection();
nc.connect(null);
var ns:NetStream=new NetStream(nc);
video.attachNetStream(ns);
ns.play("youmoive.mp4");
public function onDeActivate(event:Event):void
{
ns.pause();
}
public function onActivate(event:Event):void
{
ns.play()
}
当有电话打进来的时候,在通话过程中也播放视屏是一个很差的用户体验。添加READ_PHONE_STATE 权限到应用程序配置文件。这样的话,AIR 在打电话过程将会关闭声音。
在应用程序返回是,使用system.gc 方法。
菜单,返回,搜索按钮有一些按钮别用于系统的导航与搜索。除过Home 按钮,其它的你可以自定义他们的事件在AIR程序中。
注册keyboardEvent.KEY_DOWN 事件,通过keycode 识别按下的那个健,使用event.preventDefault() 阻止该事件,然后使用自定义的行为。
package
{
import flash.desktop.NativeApplication;
import flash.display.Sprite;
import flash.display.Stage;
import flash.display.StageAlign;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
// replace Sprite for MovieClip if using Flash Professional
public class AirApplication extends Sprite
{
public function AirApplication()
{
stage.align = StageAlign.TOP_LEFT;
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKey);
NativeApplication.nativeApplication.addEventListener(Event.ACTIVATE, onActivate);
NativeApplication.nativeApplication.addEventListener(Event.DEACTIVATE, onDeactivate);
}
private function onKey(event:KeyboardEvent):void {
switch(event.keyCode) {
case Keyboard.BACK :
event.preventDefault();
trace("back");
// go back within AIR application
break;
case Keyboard.MENU :
event.preventDefault();
trace("menu");
// display custom menu
break;
case Keyboard.SEARCH :
event.preventDefault();
trace("search");
// use as a help button or debug tool
break;
}
}
private function onActivate(event:Event):void {
stage.frameRate = 24;
trace("application in foreground");
}
private function onDeactivate(event:Event):void {
stage.frameRate = 4;
trace("application in background");
// to shut-down application, uncomment following line
// NativeApplication.nativeApplication.exit();
}
}
}
在移动设备上保存数据保存数据时应用程序必备的功能,如程序在后天运行,或者被关闭后,保存程序配置信息等。
内部与外部存储以下列出一些目录:
内部的一些存储:File.ApplicationDirectory ,是应用程序的安装目录,在这个目录是只读的。
File.ApplicationStorageDirectory 是应用程序的存储目录,使用这个目录可以保存大量的数据,和用户设置等。如果应用程序被删除的话,这个目录也会被删除。
外部的一些存储:
File.documentsDirectory ,File.userDirectory,File.desktopDirectory 等。可以保存大的数据,如图片,视屏,和临时文件。访问这些文件的全选是:
,在使用之前,确认是否有sd卡:
If(File.userDirectory==true)
//proceed with saving data
一下变量所指的目录:
App:/
File.applicationDirectory
/data/data/app.appId/app/assets
|app-storage:/
/data/data/app.appID/appID/Local Store
|File.applicationStorageDirectory
/data/data/app.appID/appID/LOcal Store
|File.documentsDirectory
File.userDierecory
File.desktopDirectory
/sdcard
|File.createTempDirectory()
File.createTempFile()
/data/data/app.appId/cache
分类: Flex
发表评论
-
自动化测试框架的设计原则【转】
2012-01-20 09:46 627自动化测试框架的设计 ... -
利用 STAF 实现程序更新包的自动部署测试
2012-01-20 09:46 983利用 STAF 实现程序更新 ... -
Google App Engine Java 版上构建电子书分享网站
2012-01-20 09:45 634Google App Engine Java 版上构建电子书分 ... -
小小游戏程序员工作两年后的反思
2012-01-20 09:45 695小小游戏程序员工作两 ... -
开源C++库
2012-01-20 09:45 695开源C++库 2010年07月06日 开源C++库必须具 ... -
浅谈医院执行力不佳的原因
2012-01-19 14:52 531浅谈医院执行力不佳的 ... -
身在保险界【三十四】
2012-01-19 14:52 608身在保险界【三十四】 ... -
执一不二 跬步千里-王子密码10月份月会心得(四)
2012-01-19 14:52 986执一不二 跬步千里-王子密码10月份月会心得(四) 2010 ... -
年底装修“赶时间” 切不可盲目赶工
2012-01-19 14:52 583年底装修“赶时间” 切不可盲目赶工 2011年01月21日 ... -
WinCE驱动开发问题精华集锦
2012-01-17 04:34 635WinCE驱动开发问题精华 ... -
WinCE驱动开发问题精华集锦(一)
2012-01-17 04:34 469WinCE驱动开发问题精华 ... -
lamp升级
2012-01-17 04:34 767lamp升级 2011年08月23日 -- lamp ... -
关于PHP的缓存
2012-01-17 04:34 667关于PHP的缓存 2011年05 ...
相关推荐
Adobe Flash Builder 4.5 Android Air 程序开发系列 之八 照相机
用于eclipse 安装Adobe Flash Builder 4.5 插件...
使用ADOBE FLASH BUILDER 4.5 目录 第 1 章: 关于 Flash Builder 可使用 Flash Builder 构建的应用程序 用于加快应用程序开发速度的功能 用于运行和调试项目的功能 Flash Builder 版本 Flash Builder 配置 ...
ADOBE FLEX4.5 和 ADOBE FLASH BUILDER4.5 开发手机应用程序,最新的手机开发教程,与官网同步。
FlashBuilder 4.5 官方的中文帮助手册
flash软件开发中不是很常用到的builder可执行文件
Adobe Flex 4.5 发行版将 Flex 和 Adobe Flash Builder 带给智能手机和平板电脑。现在,利用 Adobe AIR,可以像在桌面 平台上一样在 Flex 中轻松而高质量地开发手机应用程序。 许多现有的 Flex 组件已扩展到移动设备...
Flash开发人员在开发AIR移动应用程序时面临的一个最大的挑战是,确定如何为每种平台组织和创建构建版本。如果您针对Web、桌面、电话、平板电脑和TV进行开发,这可能是一项棘手的任务。幸运的是,Adobe花了大量时间和...
安装Adobe Flash Builer4.5步骤 整合Adobe Flash Builder4.5与Eclipse
构建 ADOBE® AIR® 应用程序 目录 第 1 章: Adobe AIR 简介 第 2 章: Adobe AIR 安装 安装 Adobe AIR 删除 Adobe AIR 安装和运行 AIR 范例应用程序 Adobe AIR 更新 第 3 章: 使用 AIR API 特定于 AIR 的 ...
Adobe Flash Builder 4.7 Plug-in Utility.exe
FMS4.5( Adobe Flash Media Server4.5)流媒体服务器搭建 支持rtmp推送与浏览
《使用AdobeAIR开发Android应用程序》源代码
Adobe Flex 和Adobe Flash Builder移动开发
Adobe® Flash® Builder™4.5.1 自述 欢迎使用 Adobe® Flash® Builder™ 4.5.1。本文档包含Flash Builder 4.5.1 文档中未提供的最新产品信息、更新和疑难解答提示。 系统最低要求 包含的内容 安装软件 卸载软件 ...
基于Adobe AIR内容简介:《Android移动应用开发:基于AdobeAIR》共四部分19章,主要介绍如何使用AdobeAIR开发Android移动应用,深入讲解Android移动开发特有的各种主题,力图帮助读者创建高品质的应用程序。...
使用Adobe AIR开发Android应用程序,英文浅显易懂,感兴趣的朋友可以下来学习。
ADOBE FLASH BUILDER 4.5 使用手册,中文版,介绍flash 4。5的基础开发知识,共11章,224页
《flash+flex+air移动开发入门经典——适用于android、ios和blackberry》 第1章 flash、flex和air简介 1 1.1 adobe flash 1 1.2 actionscript 3.0 2 1.2.1 ecmascript 2 1.2.2 关键概念 3 1.3 flex框架 11 ...