[转]Android如何区分app原生和webview实现

http://article.fynas.com/android%E5%8C%BA%E5%88%86natvie%E5%92%8Cweb%E5%AE%9E%E7%8E%B0

在开发Android app时,特别是强内容展现型的功能,会想在原生native实现和web实现中做选择,做这种选择的时候,难免想看看竞品或其它app类似功能是用哪种方式实现的。但是如何判断其它app是用原生控件实现还是用webview载入网页来实现呢?其实要想做到这一点不难,至少有两种办法:

一、抓包

这是比较原始,也是比较容易想到的,打开相应界面,抓取数据包看看,如果有url是返回比较完整的html代码,那基本就是webview来实现的了。

二、利用系统开发人员工具

抓包的方法还是太麻烦,很多系统有更高级的开发人员工具功能,一般在设置里可以找到,有些手机可能需要特殊的操作才能打开开发人员工具功能。以meizu mx2为例,在拨号界面输入 *#*#6961#*#* 打开“开发人员工具”功能(输入 *#*#6960#*#* 关闭),点击“设置”->“辅助功能”->“开发人员工具”,在绘图栏中找到“显示布局边界”并打开。这样所有应用的控件布局都一目了然了,webview作为一个控件,只有一个边界框,所以通过这一点,就比较容易区分出一个界面是webview实现的还是native布局控件实现的,当然也不排除用一堆webview来拼成一个界面的实现方法。

如下图是一个native与webview混排的界面,蓝色线框是各控件的绘制边界,中间那一大块布局丰富的界面没有显示出很多边界蓝线,就是网页实现的。

除了上面两种方法,一般来说,通过断开网络,刷新界面,观察内容缓存情况也可以对实现方式有个大致预判断,一般来说缓存做得好的,都是原生控制实现的,有界面局部缓存的就更大可能是原生的了。

高手们还有别的方案吗?欢迎在下面评论!

时间: 2024-08-03 02:33:54

[转]Android如何区分app原生和webview实现的相关文章

Android如何区分app原生和webview实现

在开发Android app时,特别是强内容展现型的功能,会想在原生native实现和web实现中做选择,做这种选择的时候,难免想看看竞品或其它app类似功能是用哪种方式实现的.但是如何判断其它app是用原生控件实现还是用webview载入网页来实现呢?其实要想做到这一点不难,至少有两种办法: 一.抓包 这是比较原始,也是比较容易想到的,打开相应界面,抓取数据包看看,如果有url是返回比较完整的html代码,那基本就是webview来实现的了. 二.利用系统开发人员工具 抓包的方法还是太麻烦,很

[转]android学习----基础UI编程(七)

自动完成输入框 AutoCompleteTextView 多内容自动完成输入框 19. AutoCompleteTextView 自动完成输入框 智能输入框 AutoCompleteTextView 1. 简介 一个可编辑的文本视图显示自动完成建议当用户键入.建议列表显示在一个下拉菜单,用户可以从中选择一项,以完成输入.建议列表是从一个数据适配器获取的数据. 2. 重要方法 clearListSelection():清除选中的列表项 dismissDropDown():如果存在关闭下拉菜单 ge

[转载]—— Android JNI知识点

Java Native Interface (JNI)标准是java平台的一部分,它允许Java代码和其他语言写的代码进行交互.JNI 是本地编程接口,它使得在 Java 虚拟机 (VM) 内部运行的 Java 代码能够与用其它编程语言(如 C.C++ 和汇编语言)编写的应用程序和库进行交互操作. 1.从如何载入.so档案谈起 由于Android的应用层的类都是以Java写的,这些Java类编译为Dex型式的Bytecode之后,必须靠Dalvik虚拟机(VM: Virtual Machine)

[转发]Android 系统稳定性 - ANR(三)

文章都为原创,转载请注明出处,未经允许而盗用者追究法律责任. 很久之前写的了,留着有点浪费,共享之. 编写者:李文栋 http://rayleeya.iteye.com/blog/1956056 1.4 如何避免ANR 1.4.1 ANR发生在主线程,不要阻塞主线程         Android应用程序的所有标准组件全部运行在一个单一的主线程中,在主线程中所做的任何耗时的操作都有可能造成ANR,因为这些耗时的操作会使得主线程没有机会处理用户输入事件或者广播事件.         因此在主线程中

[转]android学习----基础UI编程(四)

CheckBox 的使用 RadioButton 的使用 12. CheckBox 的使用 1)通过只含有一个CheckBox的实例来学习CheckBox的使用 示例代码 ① 创建新工程② 在string.xml 中添加字符串 <?xml version="1.0" encoding="utf-8"?><resources><string name="app_name">Ex_Ctrl_4</string

[转]android学习----基础UI编程(六)

相簿浏览 Gallery 文件搜索引擎FileSearch 17. Gallery 与 衍生BaseAdapter 容器 Gallery控件,即Android的图片库控件. 需要定义一个BaseAdaper的子类(eg.ImageAdapter)来操作控制图片资源,然后在主类中通过Gallery.setAdapter(new ImageAdapter(this));来使用这个控制类. 示例代码 本例中 ImageView 和 Gallery 控件相互协作 . ① 新建项目 ② 定义layout

[转]android学习----基础UI编程(二)

7. TextView 和 EditView 共舞 预达到效果:在EditText中输入同时TextView进行输出 //前提:在main.xml中添加EditText 和 TextView控件 核心代码示例: public class EX_Ctrl_1 extends Activity {    private TextView mTextView01;    private EditText mEditText01;    // Called when the activity is fi

[转]android学习----基础UI编程(八)

模拟/数字/线程小时钟设计 动态输入日期与时间 日期设置/时间设置对话框 21. 模拟/数字/线程小时钟设计 AnalogClock 与DigitalClock 的原理,以及线程时钟的实现 . 示例代码 ① 新建工程② 修改man.xml 布局,添加一个AnalogClock.一个DigitalClock.一个TextView<TextView  //这个TextView 用来显示线程时钟    android:id="@+id/TextView_showTime"    and

[转]android学习----基础UI编程(一)

1 通过 DisplayMetrics 类获取屏幕宽高 示例代码: package zyp.Activity; import android.app.Activity;import android.os.Bundle;import android.widget.*;import android.util.*; public class Test extends Activity {    //Called when the activity is first created. private T