`
noa92noa
  • 浏览: 9492 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

Adobe Flash Builder 4.5 Android Air 程序开发系列 之四 打开与关闭应用程序是的保存数据

 
阅读更多

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
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics