public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
public void gzipRequest(View v) {
new Thread() {
public void run() {
try {
gzipRequest();
} catch (Exception e) {
}.start();
protected void gzipRequest() throws Exception {
HttpGet request = new HttpGet("https://www.baidu.com/");
// Accept-Encoding:"gzip, deflate"
// 添加请求头
request.addHeader("Accept-Encoding", "gzip");
HttpClient client = new DefaultHttpClient();
// 发送请求
HttpResponse response = client.execute(request);
if (response.getStatusLine().getStatusCode() == 200) {
HttpEntity entity = response.getEntity(); // 获取到请求回来的实体
// Content-Encoding:"gzip"
boolean isGzip = false;
Header[] headers = response.getHeaders("Content-Encoding");
for (Header header : headers) {
if ("gzip".equals(header.getValue())) {
isGzip = true;
break;
System.out.println(isGzip ? "服务器进行了Gzip压缩" : "服务器没有进行Gzip压缩");
String json;
if (isGzip) {
// 解压缩
json = parseGzip(entity);
} else {
// 正常读取
json = EntityUtils.toString(entity, HTTP.UTF_8);
System.out.println(json);
* 解Gzip压缩
* @throws IOException
* @throws IllegalStateException
private String parseGzip(HttpEntity entity) throws Exception {
InputStream in = entity.getContent();
GZIPInputStream gzipInputStream = new GZIPInputStream(in);
BufferedReader reader = new BufferedReader(new InputStreamReader(
gzipInputStream, HTTP.UTF_8));
String line = null;
StringBuffer sb = new StringBuffer();
while ((line = reader.readLine()) != null) {
sb.append(line).append("\n");
return sb.toString();
控制台打印结果:
09-08 09:37:03.603: System.out(1655): 服务器进行了Gzip压缩
09-08 09:37:03.603: System.out(1655): <!DOCTYPE html>
09-08 09:37:03.603: System.out(1655): <!--STATUS OK-->
<meta http-equiv=content-type content=text/html;charset=utf-8>
<meta http-equiv=X-UA-Compatible content=IE=Edge>
<meta content=always name=referrer>
<link rel=stylesheet type=text/css href=https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/bdorz/baidu.min.css>
<title>百度一下,你就知道</title>
</head>
<body link=#0000cc>
<div id=wrapper>
<div id=head>
<div class=head_wrapper> <div class=s_form> <div class=s_form_wrapper>
<div id=lg> <img hidefocus=true src=//www.baidu.com/img/bd_logo1.png width=270 height=129> </div>
<form id=form name=f action=//www.baidu.com/s class=fm>
<input type=hidden name=bdorz_come value=1>
<input type=hidden name=ie value=utf-8>
<input type=hidden name=f value=8>
<input type=hidden name=rsv_bp value=1>
<input type=hidden name=rsv_idx value=1>
<input type=hidden name=tn value=baidu>
<span class="bg s_ipt_wr"><input id=kw name=wd class=s_ipt value maxlength=255 autocomplete=off autofocus=autofocus></span>
<span class="bg s_btn_wr"><input type=submit id=su value=百度一下 class="bg s_btn" autofocus></span>
</form>
<div id=u1>
<a href=http://news.baidu.com name=tj_trnews class=mnav>新闻</a>
<a href=https://www.hao123.com name=tj_trhao123 class=mnav>hao123</a>
<a href=http://map.baidu.com name=tj_trmap class=mnav>地图</a>
<a href=http://v.baidu.com name=tj_trvideo class=mnav>视频</a>
<a href=http://tieba.baidu.com name=tj_trtieba class=mnav>贴吧</a> <noscript>
<a href=http://www.baidu.com/bdorz/login.gif?login&tpl=mn&u=http%3A%2F%2Fwww.baidu.com%2f%3fbdorz_come%3d1 name=tj_login class=lb>登录</a> </noscript>
<script>document.write('<a href="http://www.baidu.com/bdorz/login.gif?login&tpl=mn&u='+ encodeURIComponent(window.location.href+ (window.location.search === "" ? "?" : "&")+ "bdorz_come=1")+ '" name="tj_login" class="lb">登录</a>');
我们在进行网络传输数据时,经常用到json、xml等格式的数据,这些数据在传输前可以进行压缩,这时候就会涉及到一种压缩格式—Gzip。Gzip的压缩比率非常大,有的甚至能达到70%以上,可以大大减少传输内容,提高用户的传输速度,进而提高用户的体验。
HTTP协议上的GZIP编码是一种用来改进WEB应用程序性能的技术。大流量的WEB站点常常使用GZIP压缩技术来减少文件大小,减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。作者在写这篇博客时经过测试,4.4MB的文本数据经过Gzip传输到客户端之后变为392KB,压缩效率极高。
一.服务端
服务端有2种方式去压缩,一种可以自己压缩,但是更推
「转载请说明出处:http://blog.csdn.net/kepoon/article/details/7482096」
gzip是GNUzip的缩写,它是一个GNU自由软件的文件压缩程序。
HTTP协议上的GZIP编码是一种用来改进WEB应用程序性能的技术。一般服务器中都安装有这个功能模块的,服务器端不需做改动。
当浏览器支持gzip 格式的时候, 服务器端会传输gzip...
Gziphttp数据传输,body压缩。节省流量Android开发中网络请求的压缩 ── GZip的使用
http client对post内容gzip压缩和server端解压接收
Android中使用gzip传递数据以上是参考资料下面是我测试效果fiddler 抓包代码public static void reqeust(String pUrl) {
URL url;
在android开发中图片是非常容易造成OOM异常的,大部分情况下,都需要对图片进行压缩展示,本文主要是记录下在开发中常见的几种图片压缩方法
一、质量压缩
保持像素的前提下改变图片的位深及透明度(即:通过算法抹掉(同化)图片中的一些某点附近 相近的像素)达到降低质量压缩文件的目的。 使用场景:将图片压缩后将图片上传到服务器,或者保存到本地,根据实际需求
* 质量压缩
* 设置bitmap options属性,降低图片的质量,像素不会减少
* 第一个参数为需要压缩
// 在Activity1中传递数据到Activity2
Intent intent = new Intent(Activity1.this, Activity2.class);
intent.putExtra("key", value);
startActivity(intent);
// 在Activity2中获取数据
String value = getIntent().getStringExtra("key");
2. 使用Bundle传递数据
// 在Activity1中传递数据到Activity2
Intent intent = new Intent(Activity1.this, Activity2.class);
Bundle bundle = new Bundle();
bundle.putString("key", value);
intent.putExtras(bundle);
startActivity(intent);
// 在Activity2中获取数据
Bundle bundle = getIntent().getExtras();
String value = bundle.getString("key");
3. 使用静态变量传递数据
// 在Activity1中设置静态变量
public static String value;
// 在Activity1中启动Activity2
Intent intent = new Intent(Activity1.this, Activity2.class);
startActivity(intent);
// 在Activity2中获取数据
String value = Activity1.value;
4. 使用接口回调传递数据
// 在Activity1中定义接口
public interface OnDataChangeListener {
void onDataChanged(String value);
// 在Activity1中启动Activity2并设置接口
Intent intent = new Intent(Activity1.this, Activity2.class);
Activity2.setOnDataChangeListener(new OnDataChangeListener() {
@Override
public void onDataChanged(String value) {
// 处理数据
startActivity(intent);
// 在Activity2中通过接口回调传递数据
OnDataChangeListener listener = Activity2.getOnDataChangeListener();
if (listener != null) {
listener.onDataChanged(value);
以上几种方式都可以实现Activity之间的数据传递,具体使用哪种方式取决于实际需求和场景。
修复一个ViewPager+Fragment报的java.lang.IllegalStateException Fragment already added问题
FirePrayer:
修复一个ViewPager+Fragment报的java.lang.IllegalStateException Fragment already added问题
WgRui:
修复一个ViewPager+Fragment报的java.lang.IllegalStateException Fragment already added问题
Nb的小白:
修复一个ViewPager+Fragment报的java.lang.IllegalStateException Fragment already added问题
孙先森i:
修复一个ViewPager+Fragment报的java.lang.IllegalStateException Fragment already added问题
Eaken: