Android 如何在不减慢我的应用程序速度的情况下复制文件?

Android 如何在不减慢我的应用程序速度的情况下复制文件?,android,performance,file-io,process,assets,Android,Performance,File Io,Process,Assets,我的资产中有一堆小文件,需要在应用程序第一次启动时复制到SD卡上。我从一个IntentService中获得的复制代码就像一个符咒。然而,当我开始复制很多小文件时,整个应用程序变得越来越慢(顺便说一句,我不知道为什么),这对于用户来说是一个非常糟糕的体验 当我意识到当时其他应用程序运行正常时,我尝试为该服务启动一个子进程,但没有成功,因为据我所知,我无法从另一个进程访问我的资产。有人知道怎么做吗 a) 复制文件而不阻止我的应用程序 b) 从私有进程(清单中的process=“:myOtherPro

我的资产中有一堆小文件,需要在应用程序第一次启动时复制到SD卡上。我从一个IntentService中获得的复制代码就像一个符咒。然而,当我开始复制很多小文件时,整个应用程序变得越来越慢(顺便说一句,我不知道为什么),这对于用户来说是一个非常糟糕的体验

当我意识到当时其他应用程序运行正常时,我尝试为该服务启动一个子进程,但没有成功,因为据我所知,我无法从另一个进程访问我的资产。有人知道怎么做吗

a) 复制文件而不阻止我的应用程序

b) 从私有进程(清单中的process=“:myOtherProcess”)访问我的资产

c) 用完全不同的方法解决问题

编辑: 为了更清楚地说明这一点:复制allready发生在一个单独的线程中(由IntentService自动启动)。问题不在于将复制任务分开,而是在专用线程中的复制会以某种方式影响应用程序的其余部分(例如,阻止使用许多特定于应用程序的资源?),而不是其他应用程序(因此不会阻止整个CPU或其他应用程序)

Edit2:
问题解决了,事实证明,这并不是一个真正的问题。请参阅下面我的答案。

我建议您创建一个独立的线程来完成这项工作。或者,更简单地说,一个

很抱歉,事实证明您实际上可以在子进程中使用资产。我不知道为什么我第一次试的时候它不起作用。所以我的问题的答案实际上是(b)。为Intentservice创建一个子进程,通过getApplicationContext()访问资产。getAssets()就可以了。它现在运行得很快,令人满意。谢谢你的帮助

使用asynctask复制nver影响的应用程序Orry没有帮助,更不用说asynctask似乎使UI比IntentService更慢。由于两者都创建了一个单独的线程,这对我来说并不奇怪。我想速度的放缓一定与文件系统访问有关,但我无法弄清楚。由于应用程序的所有活动都会受到影响,因此其他活动中的代码绝对没有问题。请注意,Android服务不是线程!它本身并不是一种脱离主线程工作的方法,就像文档所说的那样:。是的,文件系统访问可能会很慢。您的设备是什么?请注意,Android IntentService与Android服务并不完全相同;)。如前所述,“IntentService是服务的基类,用于按需处理异步请求(表示为意向)。客户端通过startService(意向)调用发送请求;服务根据需要启动,使用工作线程依次处理每个意向,并在工作完成时自行停止。”