美文网首页
2018-02-06 Ztree基础、 Android生命周期

2018-02-06 Ztree基础、 Android生命周期

作者: 胡諾 | 来源:发表于2018-02-07 09:04 被阅读0次

    第一组:姚成栋 Ztree基础

    在用新框架的时候你可以看到搜索部门用了一个树,如下图


    image.png

    这个树其实就是用了ztree。大致上介绍一下用法。
    Ztree的数据格式是标准的 JSON 数据需要嵌套表示节点的父子包含关系,例如:

    var nodes = [
        {name: "父节点1", children: [
            {name: "子节点1"},
            {name: "子节点2"}
        ]}
    ];
    

    如果需要使用 id / pId 表示节点的父子包含关系,例如:

    var nodes = [
        {id:1, pId:0, name: "父节点1"},
        {id:11, pId:1, name: "子节点1"},
        {id:12, pId:1, name: "子节点2"}
    ];
    

    (其中id和pid也能用字符串来表示)


    第二组:徐晋 Android生命周期

    1、android生命周期图
    image.png
    2、activity三种状态

    (1)active:当Activity运行在屏幕前台(处于当前任务活动栈的最上面),此时它获取了焦点能响应用户的操作,属于活动状态,同一个时刻只会有一个Activity处于活动(Active)。
    (2)paused:当Activity失去焦点但仍对用户可见(如在它之上有另一个透明的Activity或Toast、AlertDialog等弹出窗口时)它处于暂停状态。暂停的Activity仍然是存活状态(它保留着所有的状态和成员信息并保持和窗口管理器的连接),但是当系统内存极小时可以被系统杀掉。
    (3)stoped:完全被另一个Activity遮挡时处于停止状态,它仍然在内存中保留着所有的状态和成员信息。只是对用户不可见,当其他地方需要内存时它往往被系统杀掉。

    3、activity七个方法

    onCreate():当Activity第一次被实例化的时候系统会调用,整个生命周期只调用1次这个方法。通常用于初始化设置,为Activity设置所要使用的布局文件,为按钮绑定监听器等静态的设置操作。
    onStart():当Activity可见未获得用户焦点不能交互时系统会调用。
    onRestart():当Activity已经停止然后重新被启动时系统会调用。
    onResume():当Activity可见且获得用户焦点能交互时系统会调用。
    onPause():用来存储持久数据。到这一步是可见但不可交互的,系统会停止动画等消耗CPU的事情。从上文的描述已经知道,应该在这里保存你的一些数据,因为这个时候你的程序的优先级降低,有可能被系统收回。
    onStop():当Activity被新的Activity完全覆盖不可见时被系统调用。
    onDestroy():当Activity(用户调用finish()或系统由于内存不足)被系统销毁杀掉时系统调用,(整个生命周期只调用1次)用来释放onCreate()方法中创建的资源,如结束线程等。

    4、android三个嵌套循环

    (1)Activity完整的生命周期:从第一次调用onCreate()开始直到调用onDestroy()结束。
    (2)Activity的可视生命周期:从调用onStart()到相应的调用onStop()。在这两个方法之间,可以保持显示Activity所需要的资源。如在onStart()中注册一个广播接收者监听影响你的UI的改变,在onStop()中注销。
    (3)Activity的前台生命周期:从调用onResume()到相应的调用onPause()。

    5、BroadcastReceiver广播接收器生命周期

    生命周期只有十秒左右,如果在onReceive()内做超过十秒内的事情,就会报ANR(Application No Response)程序无响应的错误信息。它的生命周期为从回调onReceive()方法开始到该方法返回结果后结束。

    6、Service服务生命周期

    Service完整的生命周期从调用onCreate()开始直到调用onDestroy()结束。
    Service有两种使用方法:
    (1)以调用Context.startService()启动,而以调用Context.stopService()结束。
    (2)以调用Context.bindService()方法建立,以调用Context.unbindService()关闭。

    7、一个activity的启动过程

    (1)第一个Activity的启动顺序:onCreate()——>onStart()——>onResume()
    (2)当另一个Activity启动时:第一个Activity onPause()——>第二个Activity onCreate()——>onStart()
    ——>onResume()——>第一个Activity onStop()
    (3)当返回到第一个Activity时:第二个Activity onPause()——> 第 一个Activity onRestart()——>onStart()——>onResume()——>第二个Activity onStop()——>onDestroy()
    每一个Activity都处于某一个状态,对于开发者来说,是无法控制其应用程序处于某一个状态的,这些均由系统来完成。


    第三组:蔡永坚 AugularJS-特性2

    特性三:MVC

    针对客户端应用开发AngularJS吸收了传统的MVC基本原则。MVC或者Model-View-Controll设计模式针对不同的人可能意味不同的东西。AngularJS并不执行传统意义上的MVC,更接近于MVVM(Moodel-View-ViewModel)。

    Model

    model是应用中的简单数据。一般是简单的javascript对象。这里没有必要继承框架的classes,使用proxy对象封装或者使用特别的setter/getter方法来访问。事实上我们处理vanilla javascript的方法就是一个非常好的特性,这种方法使得我们更少使用应用的原型。

    ViewModel

    viewmodel是一个用来提供特别数据和方法从而维护指定view的对象。
    viewmodel是$scope的对象,只存在于AnguarJS的应用中。$scope只是一个简单的js对象,这个对象使用简单的API来侦测和广播状态变化。

    Controller

    controller负责设置初始状态和参数化$scope方法用以控制行为。需要指出的controller并不保存状态也不和远程服务互动。

    View

    view是AngularJS解析后渲染和绑定后生成的HTML 。这个部分帮助你创建web应用的架构。$scope拥有一个针对数据的参考,controller定义行为,view处理布局和互动。

    特性四:服务和依赖注入

    AngularJS服务其作用就是对外提供某个特定的功能。

    AngularJS拥有内建的依赖注入(DI)子系统,可以帮助开发人员更容易的开发,理解和测试应用。

    DI允许你请求你的依赖,而不是自己找寻它们。比如,我们需要一个东西,DI负责找创建并且提供给我们。

    为了而得到核心的AngularJS服务,只需要添加一个简单服务作为参数,AngularJS会侦测并且提供给你:

    function EditCtrl($scope, $location, $routeParams) {
    
         // Something clever here...
    }
    

    你也可以定义自己的服务并且让它们注入:

    angular.module('MyServiceModule', []).
    
        factory('notify', ['$window', function (win) {
    
        return function (msg) {
    
            win.alert(msg);
    
        };
    
    }]);
    
    function myController(scope, notifyService) {
    
        scope.callNotify = function (msg) {
    
            notifyService(msg);
    
        };
    
    }
    
    myController.$inject = ['$scope', 'notify']; 
    
    特性五:指令(Directives)

    指令是我个人最喜欢的特性。你是不是也希望浏览器可以做点儿有意思的事情?那么AngularJS可以做到。

    指令可以用来创建自定义的标签。它们可以用来装饰元素或者操作DOM属性。可以作为标签、属性、注释和类名使用。

    这里是一个例子,它监听一个事件并且针对的更新它的$scope ,如下:

    myModule.directive('myComponent', function(mySharedService) {
    
        return {
    
            restrict: 'E',
    
            controller: function($scope, $attrs, mySharedService) {
    
                $scope.$on('handleBroadcast', function() {
    
                    $scope.message = 'Directive: ' + mySharedService.message;
    
                });
    
            },
    
            replace: true,
    
            template: '<input>'
    
        };
    
    });
    

    然后,你可以使用这个自定义的directive来使用:

    <my-component ng-model="message"></my-component>
    

    使用一系列的组件来创建你自己的应用将会让你更方便的添加,删除和更新功能。


    第四组:张元一 OS X系统安装python,pygame

    使用homebrew来安装python及pygame:

    一、python安装
    1. 查看已经安装过的版本

    $ python --version

    2. 使用homebrew来安装python3

    homebrew依赖于apple包xcode,因此要执行如下命令

    $ xcode-
    

    在不断出现的确认对话框中都单击ok按钮(根据网速,需要花一些时间)。下面我们来安装homebrew

    $ ruby 
    

    这个命令可在Homebrew网站(http://brew.sh/ )的首页找到。在curl -fsSL 和URL之间,务必包含一个空格。 注意 这个命令中的-e 让Ruby(Homebrew就是使用这种编程语言编写的)执行下载的代码。除非来源是你信任的,否则不要运行这样的命令。

    检查是否成功安装homebrew

    $ brew doctor Your system is ready to brew.

    2.2 安装python3

    安装最新的python3

    $ brew install python3

    检查自己安装的python是哪个版本

    $ python3 --version Python 3.5.0 $

    二、安装pygame
    1.安装pygame依赖的库
    <pre>$ `brew install hg sdl sdl_image sdl_ttf`</pre>
    
    2.安装pygame

    <pre>$ pip3 install --user hg+http://bitbucket.org/pygame/pygame</pre>

    3.检查是否安装成功
    $ python3 
    

    第五组:陈孚楠 设计模式

    2、 工厂模式

    工厂方法模式Factory Method,又称多态性工厂模式。在工厂方法模式中,核心的工厂类不再负责所有的产品的创建,而是将具体创建的工作交给子类去做。该核心类成为一个抽象工厂角色,仅负责给出具体工厂子类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节。工厂方法模式是简单工厂模式的衍生,解决了许多简单工厂模式的问题。首先完全实现‘开-闭 原则’,实现了可扩展。其次更复杂的层次结构,可以应用于产品结果复杂的场合。

    例子:
    工厂生产仿生机器,机器都会说话,机器狗“汪”,机器猫“喵“。。。
    1、简单工厂模式:
    接口产品Robot

        public interface Robot{   
            ...
            public void Ssy();
            ...
        }   
    

    具体产品Dog

        public class Dog implements Robot{
            ...
            public void Ssy(){
                "汪~"
            }
            ...
        }
    

    具体产品Cat

        public class Cat implements Robot{
            ...
            public void Ssy(){
                "喵~"
            }
            ...
        }
    

    具体产品Bird

        public class Bird implements Robot{
            ...
            public void Ssy(){
                "叽~"
            }
            ...
        }
    

    工厂接口

    public interface RobotFactory{
            ...
            public Robot Produce()
            ...
        }
    

    具体工厂

            //具体工厂
        public class DogFactory implements RobotFactory{
            ...
            public Robot Produce(){
                return new Dog();
            }
            ...
        }
            //具体工厂
        public class CatFactory implements RobotFactory{
            ...
            public Robot Produce(){
                return new Cat();
            }
            ...
        }
           //具体工厂
        public class BirdFactory implements RobotFactory{
            ...
            public Robot Produce(){
                return new Bird();
            }
            ...
        }
        
        main(){
            RobotFactory rf = new DogFactory();
            Robot r = rf.Produce();
            r.Say();
        }   输出:"汪~"
    

    每一个产品对应一个工厂。虽然避免了修改生产方法,但还是要把种类定死。
    但可以用配置文件于反射机制解决这一问题。
    工厂模式产出是一个产品(实例),抽象工厂产出是一个抽象(接口)。区别在于,若添加一个新的产品,前者是修改工厂,后者是创建新工厂(符合“闭合原则”)。

    相关文章

      网友评论

          本文标题:2018-02-06 Ztree基础、 Android生命周期

          本文链接:https://www.haomeiwen.com/subject/jacozxtx.html