首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

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

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

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

热点排行