我做过研究并试图找到解决方案,但我觉得自己很无助。 我有持续运行的应用程序(音乐应用程序,全天候运行),如果有重新启动需要应用程序自动执行。我们的曲目是加密的,在播放之前我们解密。但是我发现在重新启动后第一次解密需要花费太多时间。有时5分钟,10分钟,18分钟。不知道发生了什么,这种情况发生在Android 5操作系统的6个设备中。有人可以帮我吗?
这是我的代码段。
File f1 = new File(inputFile);
if (f1.exists()) {
CommanFunction.writeErrorLogInFile(MyApplication.getmContext(),
"LodingMusic Call Start --> doCrypto() " + f1.getAbsolutePath());
inputStream = new FileInputStream(inputFile);
outputStream = new FileOutputStream(outputFile);
byte[] iv = key.getBytes("UTF-8");
IvParameterSpec ivParams = new IvParameterSpec(iv);
Key secretKey = new SecretKeySpec(key.getBytes(), ALGORITHM);
Cipher cipher = Cipher.getInstance(TRANSFORMATION);
cipher.init(cipherMode, secretKey, ivParams);
CipherInputStream cis = new CipherInputStream(inputStream, cipher);
int b;
byte[] d = new byte[131072];
while ((b = cis.read(d)) != -1) {
outputStream.write(d, 0, b);
}
outputStream.flush();
outputStream.close();
cis.close();
CommanFunction.writeErrorLogInFile(MyApplication.getmContext(),
"LodingMusic Call End --> doCrypto() " + f1.getAbsolutePath());
}
更新
好的,我已经做了进一步的调查,这段代码需要时间:
while ((b = cis.read(d)) != -1) {
outputStream.write(d, 0, b);
}
有人可以帮助我吗?