我正在构建一个缓冲N个相机帧的应用程序,当用户点击一个按钮时,它会使用应用效果的所有已保存帧保存照片.
我正在保存照片并在AsyncTask上处理帧.当我执行它时,我从屏幕上删除所有内容,只留下一个TextView来显示保存照片的进度.
目前AsyncTask doInBackground看起来像这样:
protected Void doInBackground(Integer... params)
{
int w = mBuffer.get(0).getWidth();
int h = mBuffer.get(0).getHeight();
int lineHeight = h / mBuffer.size();
int currentHeight = 0;
Log.d("output", "saving photo "+w+", "+h);
for (int i = 0; i < mBuffer.size(); i++)
{
YuvImage image = mBuffer.get(i);
ByteArrayOutputStream out = new ByteArrayOutputStream();
if (!image.compressToJpeg(new Rect(0, currentHeight, w, lineHeight), 50, out))
{
Log.d("output", "problem converting yuv to jpg");
break;
}
currentHeight += lineHeight;
Log.d("output", …Run Code Online (Sandbox Code Playgroud) 我的程序有许多需要大量内存的工作,当我需要停止它时我无法确切知道,但是如果内存很少,我可以强制它停止使用资源.那么我可以获得我的程序可以使用多少剩余(字节)内存?
P/s:没有办法释放进程内存.他们需要尽可能多的内存,这就是它的工作方式(而且,收藏者没有垃圾,因为旧的仍然需要).