【问题标题】:Persisting Bitmap When Activity Ends活动结束时保留位图
【发布时间】:2012-06-05 16:07:11
【问题描述】:

Android 专家,我需要一些帮助。我是安卓菜鸟。我有一个应用程序,我需要在主 UI 线程之外使用画布绘制位图。我偶然发现了 SurfaceView 类并模拟了一个快速演示。我创建了一个单独的位图实例并绘制到其中。当 SurfaceView 的 OnDraw 发生时,我将此位图复制到 SurfaceView 中。在活动结束之前,它工作得很好,例如,返回主屏幕。那时,SurfaceView 线程似乎停止了,我似乎丢失了我正在处理的位图图像。当您返回应用程序时,它会从头开始。

出于性能原因,我想使用独立于主 UI 线程的线程调用画布 2D 绘图来创建位图图像。我需要不时将该位图放入主用户界面。当活动暂停或停止时,我需要保留位图图像并继续绘制(以保持其最新状态)。

由于您必须在主 UI 线程中进行所有绘图,SurfaceView 似乎是唯一的解决方案。但它也没有像我希望的那样工作。

我需要一个永不停止运行的后台任务或线程,我需要在那里创建一个位图图像,并且我需要不时将该位图放入主用户界面(比如 10 赫兹更新)。

帮助!我该怎么做?

【问题讨论】:

  • 创建一个单独的process 对您有用吗?
  • 嗨,Dark Crow,感谢您的超快速回复。你能更详细地解释一下吗?您的意思是使用 C++、NDK 和单独的进程吗?对不起,我还是个菜鸟。
  • 您可以创建单独的process,这在Android Manifest 中不太受鼓励。
  • 但是单独的进程如何访问画布 API?你能做到吗?以及如何创建这个单独的流程?
  • 好的,看来您需要了解更多关于 Services 的信息。现在,如果您不知道 Android 中有关 Services 的选项卡,您需要转到文档并自己阅读。

标签: android bitmap surfaceview


【解决方案1】:

使用异步任务将图像绘制到您的用户界面上。

但是,重新打开应用时需要重新绘制画布。如果您想保存您创建的位图,您需要将其存储在某个地方。我认为这可以使用缓存来处理:

view.setDrawingCacheEnabled(true);

另外考虑自己管理位图:

v1.setDrawingCacheEnabled(true); 
bitmap = Bitmap.createBitmap(v1.getDrawingCache());

【讨论】:

  • 谢谢,我刚刚在阅读有关 AyncTasks 和 UI 实际上非常及时的信息!我也会研究缓存。非常感谢!
  • 没问题,很高兴能帮上忙。欢迎来到 StackOverflow。不过,您应该接受答案以将其从“未回答”列表中删除。
  • 好吧,我不知道。我想我想等一下,看看是否还有其他想法。那我就关了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-15
  • 2015-08-11
  • 1970-01-01
  • 2011-07-01
相关资源
最近更新 更多