我的资产中有一堆小文件需要在我的应用程序的第一次启动时复制到SD卡。我从放置在IntentService中的here获得的复制代码就像一个魅力。然而,当我开始复制许多litte文件时,整个应用程序变得令人难以置信的慢(我不确定为什么顺便说一句),这对用户来说是一次非常糟糕的体验。
当我意识到其他应用程序在那段时间内正常运行时,我尝试启动服务的子进程,但这并不起作用,因为据我所知,我不能从另一个进程获取资产。有没有人知道如何
a)复制文件而不阻止我的应用
b)从私有进程(在Manifest中的process =“:myOtherProcess”)中获取我的资产
或
c)以完全不同的方式解决问题
修改 为了更清楚:复制allready发生在一个单独的线程中(由IntentService自动启动)。问题不在于分离复制任务,而是在专用线程中的复制以某种方式影响应用程序的其余部分(例如阻止许多特定于应用程序的资源?)而不是其他应用程序(因此它不会阻塞整个CPU或某些应用程序) )
EDIT2: 问题解决了,事实证明,没有真正的问题。请参阅下面的答案。
答案 0 :(得分:0)
我建议你创建一个单独的线程来完成这项工作。或者,更简单的是AsyncTask!
答案 1 :(得分:0)
很抱歉,事实证明您实际上可以在子进程中使用资产。我不知道为什么它第一次尝试时它不起作用。所以我的问题的答案实际上是(b)。为Intentservice创建子进程,通过getApplicationContext()。getAssets()访问资产,然后就可以了。它现在运行速度令人满意。感谢您的帮助。