我有一个应用程序,它从Sdcard读取文件并进行一些密集处理。
加快用户体验
我创建了Application对象的子类。 在这里我创建了一个Thread,我实际上得到了对Sdcard上文件的引用 并进行了启动活动,以便一旦显示活动,用户就不会有任何延迟。
public class GAppClass extends Application {
class setMapDirThread extends Thread {
public void run() {
setMapDir();
}
}
public void onCreate() {
setMapDirThread objThread = new setMapDirThread();
objThread.start();
}
private void setMapDir() {
Log.d(TAG, "Inside initMapComponent");
String extDirName = Environment.getExternalStorageDirectory()
.getAbsolutePath();
/*
some processing related to opening and reading files from Sdcard and
allocating cache
*/
}
}
上述方法是否可以安全使用? 即在应用程序类中创建线程来做一些后台处理是好办法还是坏办法? 它是否会降低应用程序启动速度? 创建这样的线程从Sdcard读取内容并为内部缓存分配一些内存是否安全?
答案 0 :(得分:1)
在启动线程以执行长时间运行操作时,我没有看到任何问题。应用程序类是任何一个好地方。 您也可以使用Android的AsyncTask类。它可以使您的工作更轻松: http://developer.android.com/reference/android/os/AsyncTask.html
答案 1 :(得分:0)
这取决于您的应用程序的功能。如果它只涉及活动,那么它应该没问题,但不推荐(尽管你可能已阅读过)。如果您的应用程序有服务或广播接收器,那么您的应用程序将根据需要创建,并将启动缓存线程等。考虑创建一个单例类作为您的应用程序的一部分,其中有静态初始化程序,可以做你想要的启动。这使Application类保持干净。您还可以考虑使用对单例类的方法调用来初始化缓存,并在需要它的活动的onCreate()的最开头调用它。我打赌你的缓存设置得足够快。