GVKun编程网logo

Framework7开发H5App如何禁止回退离开首页(h5禁止返回)

16

在本文中,您将会了解到关于Framework7开发H5App如何禁止回退离开首页的新资讯,同时我们还将为您解释h5禁止返回的相关在本文中,我们将带你探索Framework7开发H5App如何禁止回退离

在本文中,您将会了解到关于Framework7开发H5App如何禁止回退离开首页的新资讯,同时我们还将为您解释h5禁止返回的相关在本文中,我们将带你探索Framework7开发H5App如何禁止回退离开首页的奥秘,分析h5禁止返回的特点,并给出一些关于Android Framework Application Framework层简单介绍、Android Framework 如何学习,如何从应用深入到 Framework?、Android Framework 如何学习,如何从应用深入到Framework?、CoreThink 配套 Framework7 的 WebAPP 测试版发布!的实用技巧。

本文目录一览:

Framework7开发H5App如何禁止回退离开首页(h5禁止返回)

Framework7开发H5App如何禁止回退离开首页(h5禁止返回)

 

将代码放到需要禁止回退的页面即可

主要代码

$(function () {
  //防止页面后退
  history.pushState(null, null, document.URL);
     window.addEventListener(''popstate'', function () {
     history.pushState(null, null, document.URL);
  });
})

使用路由方法

  • mainView.router.back(options) - 这个方法会触发一个反向的动画并回到上一个页面,也就是浏览历史上的回退

完整代码:

var historyLength = 0;
var timestamp=new Date().getTime();
function forbidHistoryBack(e) {
    var now=new Date().getTime();
    window.setTimeout(function () { historyLength=0; },2000);
    if(historyLength>=1 && now-timestamp<2000) {
        history.back();
        if(isWeiXin() && !!WeixinJSBridge) WeixinJSBridge.call(''closeWindow'');
    } //2秒内连续点击2次则退出myApp
    else {  //2秒内前1次后退按Framework7的访问页面历史
        historyLength++;
        timestamp = now;
        $.toast(''再按一次退出'');
        if($(''.picker-modal:visible'').length>0) jglApp.closeModal($(''.picker-modal:visible'').get($(''.picker-modal:visible'').length-1)) //逐层关闭 Picker Modal
        else if($(''.popup:visible'').length>0) jglApp.closeModal($(''.popup:visible'').get($(''.popup:visible'').length-1)) //逐层关闭 Popup
        else if($(''.panel-left:visible'').length>0) jglApp.closePanel(); //关闭最近打开的侧栏
        else mainView.router.back(); //触发一个反向的动画并回到上一个页面
        history.pushState(null, null, document.URL); //禁止回退离开首页
    }
}

//判断是否微信浏览器的函数
function isWeiXin(){
    //window.navigator.userAgent属性包含了浏览器类型、版本、操作系统类型、浏览器引擎类型等信息,这个属性可以用来判断浏览器类型
    var ua = window.navigator.userAgent.toLowerCase();  //通过正则表达式匹配ua中是否含有MicroMessenger字符串
    if(ua.match(/MicroMessenger/i) == ''micromessenger'') return true;
    else return false;
}

$(function () {
    //防止页面后退
    history.pushState(null, null, document.URL);
    window.addEventListener("popstate",forbidHistoryBack, false);
});

 

Android Framework Application Framework层简单介绍

Android Framework Application Framework层简单介绍

引言        

      Android的四层架构相比大家都很清楚,老生常谈的说一下分别为:Linux2.6内核层,核心库层,应用框架层,应用层。我今天重点介绍一下应用框架层Framework,其实也是我自己的学习心得。

        Framework层为我们开发应用程序提供了非常多的API,我们通过调用特殊的API构造我们的APP,满足我们业务上的需求。写APP的人都知道,学习Android开发的第一步就是去学习各种各样的API,什么Activity,Service,Notification等。这些都是framework提供给我们的,那么我就详细的讲讲Framework到底在整个Android架构中扮演着什么角色。 

Framework功能

          Framework其实可以简单的理解为一些API的库房,android开发人员将一些基本功能实现,通过接口提供给上层调用,可以重复的调用

         我们可以称Framework层才真正是Java语言实现的层,在这层里定义的API都是用Java语言编写。但是又因为它包含了JNI的方法,JNI用C/C++编写接口,根据函数表查询调用核心库层里的底层方法,最终访问到Linux内核。那么Framework层的作用就有2个。

1.用Java语言编写一些规范化的模块封装成框架,供APP层开发者调用开发出具有特殊业务的手机应用。

2.用Java Native Interface调用core lib层的本地方法,JNI的库是在Dalvik虚拟机启动时加载进去的,Dalvik会直接去寻址这个JNI方法,然后去调用。

        2种方式的结合达到了Java方法和操作系统的相互通信。Android为什么要用Java编写Framework层呢?直接用C或C++不是更好?有关专家给出了如下解释:

      C/C++过于底层,开发者要花很多的经历对C/C++的语言研究清楚,例如C/C++的内存机制,如果稍不注意,就会忘了开启或者释放。而Java的GC会自动处理这些,省去了很多的时间让开发者专注于自己的业务。所以才会从C/C++的底层慢慢向上变成了JAVA的开发语言,该层通过JNI和核心运行库层进行交互。

         其实这些也是Java能发展这么迅速的原因,面对对象语言的优势。不用太关注内存,放心大胆的去做实现,才有时间去创造新的事物。

Framework API

Activity Manager 

用来管理应用程序生命周期并提供常用的导航回退功能。 

Window Manager 

提供一些我们访问手机屏幕的方法。屏幕的透明度、亮度、背景。 

Content Providers 

使得应用程序可以访问另一个应用程序的数据(如联系人数据库), 或者共享它们自己的数据。 

View System 

可以用来构建应用程序, 它包括列表(Lists),网格(Grids),文本框(Text Boxes),按钮(Buttons), 甚至可嵌入的web浏览器。 

Notification Manager 

使得应用程序可以在状态栏中显示自定义的提示信息。 

Package Manager 

提供对系统的安装包的访问。包括安装、卸载应用,查询permission相关信息,查询Application相关信息等。 

Telephony Manager 

主要提供了一系列用于访问与手机通讯相关的状态和信息的方法,查询电信网络状态信息,sim卡的信息等。

 Resource Manager 

提供非代码资源的访问,如本地字符串,图形,和布局文件(Layout files )。 

Location Manager 

提供设备的地址位置的获取方式。很显然,GPS导航肯定能用到位置服务。 

XMPP 

可扩展通讯和表示协议。前身为Jabber,提供即时通信服务。例如推送功能,Google Talk。 

。。。。

Framework层提供的服务还有很多,就不一一列出啦。 

总结 

        从Android的整体框架开始,我们只详细介绍了一下Framework层,对其作用和功能,以及在4层框架中所扮演的角色做了简单的阐述。然后列举出来它提供给上层的一些重要的服务。对Application Framework有了一个简单的印象性了解,以此为开始,以后再对每个服务详细研究。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Android Framework 如何学习,如何从应用深入到 Framework?

Android Framework 如何学习,如何从应用深入到 Framework?

大部分有 "如何学习Framework源码" 这个疑问的,应该大都是应用层开发。

应用层是被 Framework 层调用执行的,知道自己的代码是怎么被调用的,才能理解程序的本质,理解本质有助于解决遇到的新问题,同时才有更多方法去优化应用层逻辑。

目前大公司的App开发都要基于模块化、层次化、组件化、控件化的思路来设计架构,而这一切的基础都建立在 Android Framework 系统框架底层原理实现之上,所以与它相关的知识都尤为重要。

那我们如何学习 Framework 呢?

关于如何学习 Android Framework 开发知识,下面给大家分享两份 Android Framework 资料:《Android Framework 开发揭秘》、《Android Framework 精编内核解析》

其中的主要内容包括:通过启动程序了解 Android 框架的概要,移植 Android 以及如何开发适合各种机器的应用程序,分析 Android 框架所需的基础知识,JNI 与 Binder 基础知识,Zygote. Service Manager. Service Server 等 Android 核心组件,Android 服务框架的结构与理解。

Android Framework 开发揭秘

第一章 系统启动流程分析

第一节 Android启动概览 第二节 init.rc解析 第三节 Zygote 第四节 面试题

第二章 Binder 解析

第一节 宏观认识 Binder 第二节 binder 的 jni 方法注册 第三节 binder驱动 第四节 数据结构 第五节 启动 service_manager 第六节 获取 service_manager 第七节 addService 流程 第八节 Binder 面试题全解析

第三章 Handler解析

第一节 源码分析 第二节 难点问题 第三节 Handler 常问面试题

第四章 AMS 解析

第一节 引言 第二节 Android架构 第三节 通信方式 第四节 系统启动系列 第五节 AMS 第六节 AMS 面试题解析

第五章 WMS解析

第一节 Activity 与 Window 相关概念 第二节 计算Activity窗口大小的过程分析 第三节 对窗口的组织方式分析 第四节 对输入法窗口的管理分析 第五节 对壁纸窗口的管理分析 第六节 计算窗口Z轴位置的过程分析 第七节 显示Activity组件的启动窗口的过程分析 第八节 切换Activity窗口的过程分析 第九节 显示窗口动画的原理分析

第六章 PKMS Android10.0 源码解读

第一节 前言 PKMS 是什么东西? 第二节 PKMS 概述信息 第三节 PKMS角色位置 第四节 PKMS 启动过程分析 第五节 APK的扫描 第七节 PMS之权限扫描 第八节 PackageManagerService大综合笔记

Android Framework 精编内核解析

第一章 深入解析Binder

  • Binder系列—开篇
  • Binder Driver初探
  • Binder Driver再探
  • Binder 启动 ServiceManager
  • 获取 ServiceManager
  • 注册服务 (addService)
  • 获取服务 (getService)
  • framework 层分析
  • 如何使用 Binder
  • 如何使用 AIDL
  • Binder 总结
  • Binder 面试题全解析

第二章 深入解析Handler消息机制

  • 宏观理论分析与Message源码分析
  • MessageQueue的源码分析
  • Looper的源码分析
  • handler的源码分析
  • Handler机制实现原理总结
  • Handler面试题全解析

第三章 Dalvik VM进程系统

  • Android系统启动-综述
  • Init篇
  • zygote篇
  • SystemServer上篇
  • SystemServer下篇

第四章 深入解析WMS

  • WMS概述
  • WMS的诞生

第五章 PackageMS启动

  • PackageMS相关框架类
  • PackageMS启动过程

篇幅有限,只展示了资料目录和部分内容截图,需要完整版《Android Framework 开发揭秘》、《Android Framework 精编内核解析》资料的朋友可以点击此处免费领取

Android Framework 如何学习,如何从应用深入到Framework?

Android Framework 如何学习,如何从应用深入到Framework?

1、为什么要学Android Framework呢?

一方面,面试考察相关内容的可能性高。随着Android开发者越来越多,企业对Android程序员的筛选也有了更高的要求, 考察对Android底层逻辑的理解和思考就是很重要的一个方面,尤其是Android Framewok中各个组件的原理。Framewok相关的知识是一个深层次的内容,有些面试官喜欢一直问到你答不上来为止,正儿八经的考察你的技术能力,这也要求Android开发工程师对相关知识有一个较为全面的认识。

另一方面,学习Android Framewok本身就是有价值的。很多公司的应用开发需要基于模块化、层次化、组件化、控件化来设计架构,它的基础就是建立在Android Framework框架的底层原理之上,学习Framewok可以深层次的去解决安卓应用开始时遇到的一些难题,甚至不少公司都有设置专门的Android Framewok开发岗位。大家都知道目前一般的Android开发者已经趋于饱和,发展的方向无非就是进阶成为中高级Android开发,或者深入Android底层逻辑转向系统开发,大家可以选择一条路径去拓宽自己的深度和广度。

例如:某场哔哩哔哩的Android开发工程师岗位面试上来就是:
1、安卓的系统架构了解吗
2、有做过framework层的开发吗
……

如果是你,你会怎么回答?

2、具体要怎么去学呢?

我们都知道,Android系统架构可以分为五个层面,从上到下依次是应用层、应用框架层、系统运行库层、硬件抽象层和Linux内核层。每个层面又涉及了很多的细分要点,在进行学习时,一定要先理解整体的流程,然后再去细啃“硬骨头”。这里推荐大家阅读这两本专业书籍:《深入理解Android》和《Android内核剖析》,读完真的收获满满,同时大家还要学会去看源码,没必要花大量时间去复写代码,不要想着去全盘吸收,学习跟踪方法和把握整体的流程才是重要之处。

3、Android Framework想要精通的话还要学什么?

如果想要精通Framework,不仅要对底层原理有一个比较充分的了解,还要能够利用Framework知识去指导实际的开发工作,包括Handler、Binder、Android系统启动流程以及AMS、PMS等内容最好都要会。

例如:Android 系统启动流程
第一步:手机开机后,引导芯片启动,引导芯片开始从固化在ROM里的预设代码执行,加载引导程序到到RAM,bootloader检查RAM,初始化硬件参数等功能;
第二步:硬件等参数初始化完成后,进入到Kernel层,Kernel层主要加载一些硬件设备驱动,初始化进程管理等操作。在Kernel中首先启动swapper进程(pid=0),用于初始化进程管理、内管管理、加载Driver等操作,再启动kthread进程(pid=2);
第三步:Kernel层加载完毕后,硬件设备驱动与HAL层进行交互。初始化进程管理等操作会启动INIT进程;
第四步:init进程(pid=1)启动后,会启动adbd,logd等用户守护进程,并且会启动servicemanager等重要服务,同时孵化出zygote进程;
第五步:zygote进程加载虚拟机,启动System Server;它负责启动和管理整个Java Framework ;
第六步:zygote同时会启动相关的APP进程,它启动的第一个APP进程为Launcher,然后启动Email,SMS等进程,所有的APP进程都有zygote fork生成。


之前小编为了彻底搞的这块知识点,对Framework 进行了一段时间的深入研究,并根据自己所学所理解整理了一些学习笔记,并更具不同小知识点进行了归类:

这是我学习时的一张思维导图,大家也可以看一下:


该路线共分为5大板块,分别是:Framework 通信、Framework底层服务、Framework 系统资源、Framework事件机制、Framework UI机制,在这些里面又分了许多小分支,大家可以仔细的参考看一下。针对这图中所记录的一些小知识点相关解析汇总成了一个文档形式。

《Framework 核心知识点汇总手册》:https://0a.fit/acnLL

Handler 机制实现原理部分:

1.宏观理论分析与Message源码分析
2.MessageQueue的源码分析
3.Looper的源码分析
4.handler的源码分析
5.总结

Binder 原理:
1.学习Binder前必须要了解的知识点
2.ServiceManager中的Binder机制
3.系统服务的注册过程
4.ServiceManager的启动过程
5.系统服务的获取过程
6.Java Binder的初始化
7.Java Binder中系统服务的注册过程

Zygote :

  1. Android系统的启动过程及Zygote的启动过程
  2. 应用进程的启动过程

    在这里插入图片描述


    AMS源码分析 ::https://0a.fit/acnLL
  3. Activity生命周期管理
  4. onActivityResult执行过程
  5. AMS中Activity栈管理详解


    深入PMS源码:
    1.PMS的启动过程和执行流程
    2.APK的安装和卸载源码分析
    3.PMS中intent-filter的匹配架构

WMS:
1.WMS的诞生
2.WMS的重要成员和Window的添加过程
3.Window的删除过程

《Android Framework学习手册》:https://0a.fit/acnLL

  1. 开机Init 进程
  2. 开机启动 Zygote 进程
  3. 开机启动 SystemServer 进程
  4. Binder 驱动
  5. AMS 的启动过程
  6. PMS 的启动过程
  7. Launcher 的启动过程
  8. Android 四大组件
  9. Android 系统服务 - Input 事件的分发过程
  10. Android 底层渲染 - 屏幕刷新机制源码分析
  11. Android 源码分析实战

CoreThink 配套 Framework7 的 WebAPP 测试版发布!

CoreThink 配套 Framework7 的 WebAPP 测试版发布!

CoreThink 配套 Framework7 媲美原生 APP 的 WebAPP 测试版发布!此为采用 CoreThink+FrameWork7 开发的 Wap 版主题,可以自动在手机访问网站的时候自动启用。效果如下:

今天关于Framework7开发H5App如何禁止回退离开首页h5禁止返回的介绍到此结束,谢谢您的阅读,有关Android Framework Application Framework层简单介绍、Android Framework 如何学习,如何从应用深入到 Framework?、Android Framework 如何学习,如何从应用深入到Framework?、CoreThink 配套 Framework7 的 WebAPP 测试版发布!等更多相关知识的信息可以在本站进行查询。

本文标签: