Android离线Doc文档访问速度慢的有效解决方法
作者:徐刘根 发布时间:2021-06-27 02:10:39
标签:android,离线文档,访问速度慢
(1)我们在访问Android的离线文档,是非常慢的,由于需要加载一些图片或者是动态的脚本语言js代码,
网上的解决方法是删除所有的js含有链接的代码,这种方法不但笨拙,还不可以有效解决;
写一个java文件,运行后即可快速访问doc
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileFilter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Map;
import java.util.UUID;
public class AndroidDoc {
private static final String ANDROID_SDK_HOME = "ANDROID_SDK_HOME";
private static final String TAG = "<script src=\"http://www.google.com/jsapi\" type=\"text/javascript\"></script>";
private static String androidSDKHome;
public static void main(String[] args) {
Map<String, String> map = System.getenv();
androidSDKHome = map.get(ANDROID_SDK_HOME);
if (androidSDKHome != null) {
System.out.println("Detected the Android SDK Installation path:"
+ androidSDKHome);
File docs = new File(androidSDKHome + "\\docs");
System.out.println("It will take several minutes, please wait...");
traverse(docs);
System.out
.println("Operation Down!!! Now you can visit Android Doc without waiting...");
} else {
System.out
.println("Please configure the Android SDK Environment variable (ANDROID_SDK_HOME)!");
}
}
/**
* 遍历Android SDK安装目录下的docs目录
*
* @param dir
*/
private static void traverse(File dir) {
if (dir.isDirectory()) {
File[] files = dir.listFiles(new FileFilter() {
@Override
public boolean accept(File file) {
if (file.isFile() && file.getName().endsWith(".html")) {
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader(file));
String buffer;
while ((buffer = reader.readLine()) != null) {
if (buffer.trim().equalsIgnoreCase(TAG)) {
return true;
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} else if (file.isDirectory()) {
return true;
}
return false;
}
});
for (File file : files) {
if (file.isDirectory()) {
System.out.println("Scanning Folder:"
+ file.getAbsolutePath());
traverse(file);
} else {
doChange(file);
}
}
}
}
/**
* 注释html中的某行Javascript代码
*
* @param file
* @return
*/
private static boolean doChange(File file) {
System.out.println("Extracting File:" + file.getAbsolutePath() + "...");
String desPath = file.getParent() + "\\" + UUID.randomUUID().toString() + ".html";
File des = new File(desPath);
BufferedReader reader = null;
BufferedWriter writer = null;
try {
des.createNewFile();
reader = new BufferedReader(new FileReader(file));
writer = new BufferedWriter(new FileWriter(des));
String buffer;
while ((buffer = reader.readLine()) != null) {
if (buffer.trim().equalsIgnoreCase(TAG)) {
buffer = "<!--" + TAG + "-->";
}
writer.write(buffer + "\n");
writer.flush();
}
return true;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
reader.close();
writer.close();
file.delete();
des.renameTo(file);
} catch (IOException e) {
e.printStackTrace();
}
}
return false;
}
}
编译运行后,即可
(2)我的方法是,是有一个单独的游览器(作为开发者,至少有那么两三个吧!),来作为访问该离线文档的游览器,比如我的是用google,当我们需要访问的时候,我们可以使用 腾讯管家 360等 把游览器设置为 ---禁止访问网络,然后就可以访问了!
具体我的过程是:我使用的是腾讯管家,右键点解小火箭
进入 流量监控
然后找到chrome 点击右键 第一选项---禁止访问网络 就可以了
当我们需要使用chrome访问网络的时候,在按照上图 允许范围跟网络就可以了!
来源:https://blog.csdn.net/xlgen157387/article/details/42062623


猜你喜欢
- (一) shiro的SecurityManager类结构为:总结: 1.SecurityManager主要作用于登录、登出用创建主题Subj
- 前言现在APP中用到H5页面的越来越多,而如何正确获取WebView的网页title是必须要考虑的。最近做项目的时候,老大让我把之前做的we
- 如下所示:# ===============================================================
- 每次写批量的时候,都要在网上搜索一下,虽然都做过多次了,但具体的自己还是记不住(汗颜),所以索性今天就记录下来。前期说明:foreach的主
- 本文实例讲述了Android基于TextView实现的跑马灯效果。分享给大家供大家参考,具体如下:package sweet.venst.a
- Android权限一般是在AndroidManifest.xml中声明,在安装或首次使用的时候系统会自动提示用户是否提供权限Android官
- “Hello World!”的程序写过不少,不过都是在黑色背景的控制台上显示白色的文字。这次决定写点特别的,让“Hello World!”变
- java进行时间转换成unix timestamp的具体代码,供大家参考,具体内容如下import java.text.DateFormat
- 1、问题引入我们已经完成了后台系统的登录功能开发,但是目前还存在一个问题,就是用户如果不登录,直接访问系统首页面,照样可以正常访问。很明显,
- 问题我需要从一个java的集合中,根据另一个集合的内容,删除第一个集合中不特定的元素。这看上去非常简单,但却遇到了问题。这是我要写的方法的头
- 本文介绍了C#中csv文件与DataTable互相导入处理实例解析,主要功能代码封装处理下,相对比较简单。以后项目用到的话可以直接使用。具体
- 前言:在 Spring 中, IOC 是很重要的概念,其本质就是 map 结构,存储容器和业务 Be
- 基础配置新建module:cloudalibaba-config-nacos-client3377pom文件版本号已经由父工程控制<?
- 引言用过Spring Cloud的同学都知道在使用动态配置刷新的我们要配置一个 @RefreshScope,在类上才可以实现对象属性的的动态
- 一、题目描述题目实现:在进行网络编程时,由于进行网络连接是比较消耗资源的,因此,可以对连接的等待时间进行设置,如果在规定的时间没有进行连接,
- 做Java的面试题时遇到了以下这题,百度了一下Math.round()的修约规则,有的说是四舍五入,有的说是四舍六入,发现和我学分析化学时用
- telnet-client太费尽了,比ssh-client费尽的多,搞了一天,凑合能用,还得改。org.apache.commons.net
- WPF 实现调用 ffmpeg 实现屏幕录制框架使用.NET4Visual Studio 2022需要去 ffmpeg[2]&nb
- 构造方法以及参数:PageView可用于Widget的整屏滑动切换,如当代常用的短视频APP中的上下滑动切换的功能,也可用于横向页面的切换,
- Java 利用poi把数据库中数据导入Excel效果:使用时先把poi包导入工程的path,注意只需要导入poi包即可,下载后有三个jar包