android system Webview是安卓的一个浏览器内核,手机上的应用可以通过调用它来直接显示网页内容。
webview 会将我们浏览过的网页url已经网页文件(css、图片、js等)保存到数据库表中。
Webview是安卓的一个浏览器内核,手机上的应用可以通过调用它来直接显示网页内容,这次更新主要是为了解决一些应用不能正常显示网页内容的问题,比如12306的支付页面无法显示等。
这个是不能删除的,如果删除了很多应用都不能正常使用了。
1、Android中的WebView控件当加载html时候,会在data/应用package下生成database与cache两个文件夹如下图如示:
Url记录是保存在webviewCache.db里,而url的内容是保存在webviewCache文件夹下。
WebView中存在着两种缓存:网页数据缓存(存储打开过的页面及资源)、H5缓存(即AppCache)。
2、缓存构成
/data/data/package_name/cache/
/data/data/package_name/database/webview.db
/data/data/package_name/database/webviewCache.db
webview 会将浏览过的网页url以及网页文件(css、图片、js等)保存到数据库表中。
缓存模式(5种)
LOAD_CACHE_ONLY: 不使用网络,只读取本地缓存数据
LOAD_DEFAULT: 根据cache-control决定是否从网络上取数据。
LOAD_CACHE_NORMAL: API level 17中已经废弃, 从API level 11开始作用同LOAD_DEFAULT模式
LOAD_NO_CACHE: 不使用缓存,只从网络获取数据.
LOAD_CACHE_ELSE_NETWORK,只要本地有,无论是否过期,或者no-cache,都使用缓存中的数据。
<pre name="code" class="java">package com.qin.operadbimport java.io.DataInput
import java.io.DataOutput
import java.io.IOException
import java.sql.PreparedStatement
import java.sql.ResultSet
import java.sql.SQLException
import org.apache.hadoop.io.Text
import org.apache.hadoop.io.Writable
import org.apache.hadoop.mapreduce.lib.db.DBWritable
/***
* 封装数据库实体信息
* 的记录
*
* 搜索大数据技术交流群:376932160
*
* **/
public class PersonRecoder implements Writable,DBWritable {
public int id//对应数据库中id字段
public String name//对应数据库中的name字段
public int age//对应数据库中的age字段
@Override
public void readFields(ResultSet result) throws SQLException {
this.id=result.getInt(1)
this.name=result.getString(2)
this.age=result.getInt(3)
}
@Override
public void write(PreparedStatement stmt) throws SQLException {
stmt.setInt(1, id)
stmt.setString(2, name)
stmt.setInt(3, age)
}
@Override
public void readFields(DataInput arg0) throws IOException {
// TODO Auto-generated method stub
this.id=arg0.readInt()
this.name=Text.readString(arg0)
this.age=arg0.readInt()
}
@Override
public void write(DataOutput out) throws IOException {
// TODO Auto-generated method stub
out.writeInt(id)
Text.writeString(out, this.name)
out.writeInt(this.age)
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "id: "+id+" 年龄: "+age+" 名字:"+name
}
}
</pre>
MR类的定义代码,注意是一个Map Only作业:
<pre name="code" class="java">package com.qin.operadb
import java.io.IOException
import org.apache.hadoop.conf.Configuration
import org.apache.hadoop.fs.FileSystem
import org.apache.hadoop.fs.Path
import org.apache.hadoop.io.LongWritable
import org.apache.hadoop.io.Text
import org.apache.hadoop.mapred.JobConf
import org.apache.hadoop.mapred.lib.IdentityReducer
import org.apache.hadoop.mapreduce.Job
import org.apache.hadoop.mapreduce.Mapper
import org.apache.hadoop.mapreduce.lib.db.DBConfiguration
import org.apache.hadoop.mapreduce.lib.db.DBInputFormat
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat
public class ReadMapDB {
/**
* Map作业读取数据记录数
*
* **/
private static class DBMap extends Mapper&ltLongWritable, PersonRecoder , LongWritable, Text&gt{
@Override
protected void map(LongWritable key, PersonRecoder value,Context context)
throws IOException, InterruptedException {
context.write(new LongWritable(value.id), new Text(value.toString()))
}
}
public static void main(String[] args)throws Exception {
JobConf conf=new JobConf(ReadMapDB.class)
//Configuration conf=new Configuration()
// conf.set("mapred.job.tracker","192.168.75.130:9001")
//读取person中的数据字段
// conf.setJar("tt.jar")
//注意这行代码放在最前面,进行初始化,否则会报
DBConfiguration.configureDB(conf, "com.mysql.jdbc.Driver", "jdbc:mysql://192.168.211.36:3306/test", "root", "qin")
/**要读取的字段信息**/
String fileds[]=new String[]{"id","name","age"}
/**Job任务**/
Job job=new Job(conf, "readDB")
System.out.println("模式: "+conf.get("mapred.job.tracker"))
/**设置数据库输入格式的一些信息**/
DBInputFormat.setInput(job, PersonRecoder.class, "person", null, "id", fileds)
/***设置输入格式*/
job.setInputFormatClass(DBInputFormat.class)
job.setOutputKeyClass(LongWritable.class)
job.setOutputValueClass(Text.class)
job.setMapperClass(DBMap.class)
String path="hdfs://192.168.75.130:9000/root/outputdb"
FileSystem fs=FileSystem.get(conf)
Path p=new Path(path)
if(fs.exists(p)){
fs.delete(p, true)
System.out.println("输出路径存在,已删除!")
}
FileOutputFormat.setOutputPath(job,p )
System.exit(job.waitForCompletion(true) ? 0 : 1)
}
}
</pre>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)