在Android上执行文件I / O - 它属于哪个线程

时间:2010-12-13 19:15:36

标签: android file-io android-strictmode

在StrictMode上阅读Brad Fitzpatrick的article之后,我只剩下几个问题。

文件I / O在我的应用程序中属于哪里? (我知道UI线程是错误的,但可能产生新的线程会更糟?)

如果我应该使用线程进行磁盘访问,那么我的应用程序应该如何处理实现呢?将参数发送到AsyncTask?共享变量?我想优化内存使用量,不仅仅是响应性(特别是因为我的手机没有明显的差异)

@Brad,如果你读到这个:我喜欢带有样本的博客文章(或链接到aosp源中的地方),这是在框架中完成的。

谢谢大家!

1 个答案:

答案 0 :(得分:4)

不要担心线程。启动新线程比磁盘更快。在Nexus One上,IIRC,创建新的Threads&在循环中启动它们是~1 ms。

使用最适合您的应用程序:AsyncTask,IntentService或具有共享状态的新线程(具有适当的锁!)。如果用户切换掉,AsyncTask可以保证继续运行,但更容易使用,并在完成后弹回UI线程。 IntentService将继续运行并完成,但不会帮助您返回带有结果的UI线程。您需要将结果(如果有)发送到UI线程上的Handler。