相关疑难解决方法(0)

有必要退出HandlerThread吗?

我的应用程序使用a HandlerThread为需要在后台线程上运行的组件共享的一些操作.大多数情况下,此线程将处于等待状态.

我可以HandlerThread在我的应用程序中保持运行(等待),在必要时向其发送消息,但从不通过它退出HandlerThread.getLooper().quit()吗?这可能意味着HandlerThread即使在我的所有应用程序组件都被销毁之后,它仍将继续存在于等待状态.

最初这对我来说似乎是一个很大的问题 - 我绝对不想做的事 - 但我现在不确定.当Android杀死我的进程时,就像它需要释放CPU时间或内存一样,它将结束这个线程和我的UI线程.此外,线程将等待,因此它不会占用任何CPU时间.除此之外,我的应用程序使用了很多AsyncTasks,我知道利用线程池.根据我的理解,AsyncTask利用ThreadPoolExecutor,它不遵循任何应用程序生命周期回调(池中的线程在不使用时,只是坐等).

所以我的问题是,我可以使用HandlerThread跨多个应用程序组件,从不(或很少)退出它,并在不使用时让它等待,而不会遭受可怕的不良影响吗?

multithreading android handler

10
推荐指数
1
解决办法
2046
查看次数

快速,稳健地保存/加载文档状态,适用于图像编辑器

我正在寻找一些批评我的方法来存储Android和iPhone手机的位图编辑器的状态.即使是"看起来很好!" 回复会很棒!

在应用程序中,当前用户文档包含几个可以绘制的位图图层(每个可能是1024 x 768像素).该应用程序的基本要求是:

  1. 我需要能够保存和恢复文档状态.

  2. 当用户退出应用程序或接到电话时,我需要能够快速保存文档状态(大约2秒钟内).

  3. 如果应用程序崩溃,我需要能够恢复文档状态(如果用户失去可能30秒的工作,则可以).

对于1,我找不到任何支持图层的打开文件格式.我将使用以下文件结构来存储我的文档:

document_folder/
  layer1.png
  layer2.png
  ...
  metadata.xml
Run Code Online (Sandbox Code Playgroud)

图层只存储为.png文件,.xml文件包含数据,例如当前可见的图层.文档文件夹可以由应用程序按原样打开,也可以将文件夹存储在.zip文件中.对于其他应用程序来说,这似乎是一个很好的简单格式.

除了.png文件,我还允许以自定义.raw文件格式保存图层,其中包含来自位图的未处理原始像素数据.我可以在手机上快速保存这些(<0.5s),而.png文件需要一两秒钟.

我在启动时快速保存文档的计划是创建一个名为/ autosave的文件夹,并在那里保存所有图层的.raw版本.在一个图层上编辑几个命令之后,我会在后台线程中更新该图层的.raw文件.为了保存时的稳健性,我会将图层保存为例如layer1_tmp.raw,当我确认文件已完全写入时,将layer1.raw替换为此文件.

如果应用程序在使用过程中崩溃,我只需重新打开/ autosave文件夹.当应用程序关闭或用户接到电话时,我只需要将最后修改的层更新为自动保存.当用户想要保存时,我只是将所有.raw文件转换为.png文件,然后压缩文件夹.

你怎么看?有明显的缺陷吗?有更简单的方法吗?我不知怎的重新发明轮子?谢谢.

java iphone serialization android image-processing

7
推荐指数
1
解决办法
686
查看次数