5种变迁,安装、更新、启动、暂停、卸载,每个app都可以自行维护每种变迁

方法简单,只需要在app/$app_name目录下定义task.php文件

<?php
class desktop_task{ }

日志记录,关键节点记录log日志,记录方式是kernel::log();

install 安装

在app安装时需要基本的外部参数,例如 base,需要db_host db_user 等参数,根据参数进行配置文件的生成和数据库的连接。

如果安装过程需要参数,需要些回调函数install_options(),返回值为二维数组,一维key表示参数

class desktop_task{
function install_options(){
return array(
'admin_uname'=>array('type'=>'text','vtype'=>'required','required'=>true,'title'=>'用户名','default'=>'admin');
'admin_password'=>array('type'=>'password','vtype'=>'required','required'=>true,'title'=>'密码');
'admin_password_re'=>array('type'=>'password','vtype'=>'required','vtype'=>'samePas','required'=>true,'title'=>'重复密码');
);
}
}

注意!'vtype'=>'samePas'两次密码必须相同

type 输入方式text/select/password

default 默认值

options 选项,当type设置为select时,会从options中取得需要选项

options_callback 选项的函数回调,当type设置为select,当选项不能通过枚举的形式列举出来时,需要回调函数来返回相应的options数组。

title 标题名

检测参数是否正确,通过回调函数checkenv()来实现

<?php
class base_task{
  function checkenv($options){
    if(!$options['db_host']){
echo app::get('base')->_("Error: 需要填写数据库主机")."\n";
return false;
}
if(!$options['db_user']){
echo app::get('base')->_("Error: 需要填写数据库用户名")."\n";
return false;
}
if(!$options['db_name']){
echo app::get('base')->_("Error: 请选择数据库")."\n";
return false;
}
}
}

options安装参数,内容为install_options函数返回值

安装过程

安装一个app分三步

pre_install

install 安装系统当前状态下所支持的所有app资源

post_install

pre_install 系统安装前完成,通过回调函数pre_install()实现 (准备)

通常不需要

参数$options,内容为install_options函数返回值

返回null

post_install 系统安装后完成,通过回调函数post_install()实现 (事后)

初始化安装的过程基本在此回调函数内实现

dbeav-meta注册

app数据库初始化数据,需要使用类库base_initial

设置setting初始化数据

为pam app注册账号类型

uninstall 卸载

有install函数,就应该有uninstall函数

pre_uninstall 参数无 返回null

post_uninstall 参数无 返回null

update 更新

pre_update 参数无 返回null

post_update 参数$version 返回null

active 启用

pre_enable

post_enable

pause 暂停

pre_disable

post_disable

active pause 参数无 返回null

ecos的app生命周期的更多相关文章

  1. 微信小程序APP生命周期

    小程序APP生命周期需要先从app.js这个文件开始,App() 必须在 app.js 中调用,必须调用且只能调用一次,app.js中定义了一些应用的生命周期函数 onLaunch----当小程序初始 ...

  2. 微信APP生命周期、页面生命周期

    目录 小程序的启动流程 app生命周期 页面的生命周期 页面的生命周期(图) 小程序的启动流程 我们画一个图来表示一下,整个小程序的启动流程,我们就知道了: app生命周期 执行App()函数也就是注 ...

  3. 微信小程序-APP生命周期与运行机制

    QQ讨论群:785071190 开发微信小程序之前需要先了解微信小程序运行机制以及其生命周期,小程序APP生命周期需要先从app.js这个文件开始. 阅读过"微信小程序-代码构成" ...

  4. 14 - XML、JSON、PLIST对比和APP生命周期

    XML中间的 数据表达/传输数据的语言 优点:特别强大 强大到很多平台都有基于XML的独立语言,如MXML.HTML 缺点:传输小型数据时,特别啰嗦 size / speed = time JSON ...

  5. iOS进阶——App生命周期

    State Description Not running The app has not been launched or was running but was terminated by the ...

  6. ios app 生命周期

    https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/The ...

  7. app生命周期之即将关闭

    需求:当软件正在进行任务还未结束时,如果用户强制退出软件,需要将一些数据进行保存等处理. 策略:当用户使用多任务将软件挂起,并滑掉软件时,接下来有5妙钟的时间留给软件做处理.会调用- (void)ap ...

  8. Android App的生命周期是什么

    怎么说呢 看Android一般指的是 Activity的生命周期, 关于app的生命周期, 有明白的大神请告诉我 上面这张图是 网上搜到的一张关于app生命周期的图, 在我看来, 其实就是一个Acti ...

  9. OS开发之旅之App的生命周期【转载】

    原文链接 http://www.360doc.com/content/15/0918/14/27799428_499912639.shtml 在iOS App中,入口函数并不在根目录下,而是在“Sup ...

随机推荐

  1. android网络编程之HttpUrlConnection的讲解--实现文件的断点上传

    1.网络开发不要忘记在配置文件中添加访问网络的权限 <uses-permission android:name="android.permission.INTERNET"/& ...

  2. servlet第1讲初识

  3. vs设计界面出现“建控件时出错 响应在此上下文中不可用”

    使用VS2010设计Asp.net时出现: 只有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时,才能使用会话状态.还请确保在应用程序配置的 \\ 节中包括 ...

  4. Python 协程/异步IO/Select\Poll\Epoll异步IO与事件驱动

    1 Gevent 协程 协程,又称微线程,纤程.英文名Coroutine.一句话说明什么是线程:协程是一种用户态的轻量级线程. 协程拥有自己的寄存器上下文和栈.协程调度切换时,将寄存器上下文和栈保存到 ...

  5. ASP.NET获取客户端信息,获取客户端IP等等

    山上明月 ASP.NET能知道的东西 获取服务器电脑名: Page.Server.ManchineName 获取用户信息: Page.User 获取客户端电脑名:Page.Request.UserHo ...

  6. ASP.NET中使用Server.Transfer()方法在页间传值 实例

    以下代码在VS2008中测试通过 <%@ Page Language="C#" AutoEventWireup="true" CodeFile=" ...

  7. CSS position 属性

    position: relative | absolute | static | fixed 参考网站:http://blog.csdn.net/dyllove98/article/details/8 ...

  8. less分页阅读

    less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大.less 的用法比起 more 更加的有弹性.在 more 的时候,我们并没有办法向前面翻 ...

  9. android 检测是否插入U盘方法之一

    本方法是检测文件/proc/partitions. import java.io.*; File Usbfile = new File("/proc/partitions");if ...

  10. SonarQube代码质量管理平台比较好的搭建和使用资料

    http://www.voidcn.com/blog/lidujun1028/article/p-3831235.html   Sonar (SonarQube)是一个开源平台,用于管理源代码的质量. ...