最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android實現(xiàn)壓縮字符串的方法示例

 更新時間:2017年08月27日 15:10:13   作者:RustFisher  
最近在做Android開發(fā),遇到了需要壓縮字符串的功能,下面這篇文章主要給大家介紹了Android實現(xiàn)壓縮字符串的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。

前言

Android端可以對字符串進行壓縮,我們在進行大量簡單文本傳輸時,可以先壓縮字符串再發(fā)送。接收端接收后再解壓。也可以將字符串壓縮后存入數(shù)據(jù)庫中,下面話不多說了,來一起看看詳細(xì)的介紹吧。

使用到的類庫

GZIPOutputStream

代碼示例

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
public class StrZipUtil {
 /**
  * @param input 需要壓縮的字符串
  * @return 壓縮后的字符串
  * @throws IOException IO
  */
 public static String compress(String input) throws IOException {
  if (input == null || input.length() == 0) {
   return input;
  }
  ByteArrayOutputStream out = new ByteArrayOutputStream();
  GZIPOutputStream gzipOs = new GZIPOutputStream(out);
  gzipOs.write(input.getBytes());
  gzipOs.close();
  return out.toString("ISO-8859-1");
 }
 /**
  * @param zippedStr 壓縮后的字符串
  * @return 解壓縮后的
  * @throws IOException IO
  */
 public static String uncompress(String zippedStr) throws IOException {
  if (zippedStr == null || zippedStr.length() == 0) {
   return zippedStr;
  }
  ByteArrayOutputStream out = new ByteArrayOutputStream();
  ByteArrayInputStream in = new ByteArrayInputStream(zippedStr
    .getBytes("ISO-8859-1"));
  GZIPInputStream gzipIs = new GZIPInputStream(in);
  byte[] buffer = new byte[256];
  int n;
  while ((n = gzipIs.read(buffer)) >= 0) {
   out.write(buffer, 0, n);
  }
  // toString()使用平臺默認(rèn)編碼,也可以顯式的指定如toString("GBK")
  return out.toString();
 }
}

紅米手機測試輸出

08-09 13:16:53.388 32248-32267/com.rustfisher.ndkproj D/rustApp: 開始存入數(shù)據(jù)庫 ori1 len=304304
08-09 13:16:53.418 32248-32267/com.rustfisher.ndkproj D/rustApp: 已存入數(shù)據(jù)庫 ori1 len=304304 , 耗時約37 ms
08-09 13:16:53.418 32248-32267/com.rustfisher.ndkproj D/rustApp: 開始壓縮 ori1 len=304304
08-09 13:16:53.438 32248-32267/com.rustfisher.ndkproj D/rustApp: 壓縮完畢 zip1 len=1112 , 耗時約19 ms
08-09 13:16:53.438 32248-32267/com.rustfisher.ndkproj D/rustApp: 存壓縮后的數(shù)據(jù)進數(shù)據(jù)庫 zip1.length=1112
08-09 13:16:53.448 32248-32267/com.rustfisher.ndkproj D/rustApp: 壓縮后的數(shù)據(jù)已進數(shù)據(jù)庫 zip1.length=1112 , 耗時約8 ms
08-09 13:16:53.448 32248-32267/com.rustfisher.ndkproj D/rustApp: 解壓開始
08-09 13:16:53.488 32248-32267/com.rustfisher.ndkproj D/rustApp: 解壓完畢 耗時約36 ms

存儲時間受存儲字符串的長度影響。字符串長度與存儲耗時正相關(guān)。

榮耀手機測試

08-09 10:38:42.759 23075-23109/com.rustfisher D/rustApp: 開始壓縮 ori1 len=304304
08-09 10:38:42.764 23075-23109/com.rustfisher D/rustApp: 壓縮完畢 zip1 len=1112
08-09 10:38:42.764 23075-23109/com.rustfisher D/rustApp: 解壓開始
08-09 10:38:42.789 23075-23109/com.rustfisher D/rustApp: 解壓完畢

此例中,榮耀壓縮耗時約5ms,解壓耗時約25ms。

可以看出,壓縮后與原長度之比 1112/304304, 約0.365%

壓縮和解壓縮耗時視手機情況而定。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • Android實現(xiàn)粒子中心擴散動畫效果

    Android實現(xiàn)粒子中心擴散動畫效果

    粒子動畫效果相比其他動畫來說是非常復(fù)雜了的,主要涉及三個方面,粒子初始化、粒子位移、粒子回收等問題,本篇將實現(xiàn)兩種動畫效果,代碼基本相同,只是旋轉(zhuǎn)速度不一樣,需要的朋友可以參考下
    2024-02-02
  • 使用Android Studio Gradle實現(xiàn)友盟多渠道打包

    使用Android Studio Gradle實現(xiàn)友盟多渠道打包

    這篇文章主要介紹了使用Android Studio Gradle實現(xiàn)友盟多渠道打包,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • 故事講解Activity生命周期(貓的一生)

    故事講解Activity生命周期(貓的一生)

    關(guān)于Android中Activity的生命周期,網(wǎng)上大多數(shù)文章基本都是直接貼圖、翻譯API,比較籠統(tǒng)含糊不清。本文主要用故事講解Activity生命周期。下面跟著小編一起來看下吧
    2017-03-03
  • Android6.0指紋識別開發(fā)實例詳解

    Android6.0指紋識別開發(fā)實例詳解

    這篇文章主要介紹了Android6.0指紋識別開發(fā)實例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • Android?數(shù)據(jù)壓縮淺析

    Android?數(shù)據(jù)壓縮淺析

    這篇文章主要為大家介紹了Android?數(shù)據(jù)壓縮方法淺析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • Android實現(xiàn)本地Service方法控制音樂播放

    Android實現(xiàn)本地Service方法控制音樂播放

    這篇文章主要為大家詳細(xì)介紹了Android實現(xiàn)本地Service方法控制音樂播放,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • Android實現(xiàn)新增及編輯聯(lián)系人的方法

    Android實現(xiàn)新增及編輯聯(lián)系人的方法

    這篇文章主要介紹了Android實現(xiàn)新增及編輯聯(lián)系人的方法,是Android應(yīng)用開發(fā)常見的功能,需要的朋友可以參考下
    2014-07-07
  • Android實現(xiàn)懸浮窗體效果

    Android實現(xiàn)懸浮窗體效果

    這篇文章主要為大家詳細(xì)介紹了Android實現(xiàn)懸浮窗體效果,顯示懸浮窗口,窗口可以拖動,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • Android編程動態(tài)修改RelativeLayout寬高的方法

    Android編程動態(tài)修改RelativeLayout寬高的方法

    這篇文章主要介紹了Android編程動態(tài)修改RelativeLayout寬高的方法,涉及Android動態(tài)布局的相關(guān)技巧,需要的朋友可以參考下
    2015-12-12
  • 一個Activity中多個Fragment的切換

    一個Activity中多個Fragment的切換

    經(jīng)常會遇到在一個activity界面上布局多個fragment,但是如何從一個fragment跳轉(zhuǎn)到另一個fragment呢?本文主要對一個Activity中多個Fragment的切換進行介紹,下面跟著小編一起來看下吧
    2017-01-01

最新評論

石家庄市| 遂昌县| 山丹县| 卓尼县| 马关县| 育儿| 景宁| 合肥市| 天全县| 长沙市| 进贤县| 崇阳县| 新乡市| 延吉市| 婺源县| 广元市| 松滋市| 奉化市| 海原县| 玛沁县| 莱州市| 安溪县| 丰镇市| 禄丰县| 济南市| 兰溪市| 乌恰县| 拉萨市| 比如县| 芜湖县| 修水县| 海晏县| 农安县| 苍梧县| 平罗县| 通海县| 湘西| 康平县| 高青县| 布拖县| 民乐县|