我正在为 android 创建一个简单的应用程序,但我遇到了一个奇怪的问题。我有两个活动和一个 Dictionary IntentService。Dictionary IntentService 只是将存储在 assets 文件夹中的文本文件读取到 HashMap 中。请注意,我在清单中都有这两项活动。
这就是我正在做的一切:
Intent intent = new Intent(this, AnActivity.class);
startActivity(intent);
Intent intentDict = new Intent(this, DictionaryService.class);
startService(intentDict);
第一个活动运行良好,它加载第二个活动并在 nexus 7 模拟器上显示它的 UI。但是当它尝试运行第二个意图时,我得到了这个 OutOfMemory 错误:
05-02 23:29:48.507: I/dalvikvm(797): at android.os.Handler.dispatchMessage(Handler.java:99)
05-02 23:29:48.507: I/dalvikvm(797): at android.os.Looper.loop(Looper.java:137)
05-02 23:29:48.507: I/dalvikvm(797): at android.os.HandlerThread.run(HandlerThread.java:60)
05-02 23:29:48.517: W/dalvikvm(797): threadid=11: thread exiting with uncaught exception (group=0x40a71930)
05-02 23:29:48.527: E/AndroidRuntime(797): FATAL EXCEPTION: IntentService[DictionaryService]
05-02 23:29:48.527: E/AndroidRuntime(797): java.lang.OutOfMemoryError
05-02 23:29:48.527: E/AndroidRuntime(797): at java.util.HashMap.makeTable(HashMap.java:555)
05-02 23:29:48.527: E/AndroidRuntime(797): at java.util.HashMap.doubleCapacity(HashMap.java:575)
05-02 23:29:48.527: E/AndroidRuntime(797): at java.util.HashMap.put(HashMap.java:405)
05-02 23:29:48.527: E/AndroidRuntime(797): at java.util.HashSet.add(HashSet.java:95)
05-02 23:29:48.527: E/AndroidRuntime(797): at com.example.androidApp.Dictionary.readInData(Dictionary.java:73)
05-02 23:29:48.527: E/AndroidRuntime(797): at com.example.androidApp.Dictionary.<init>(Dictionary.java:35)
现在的问题是,当我单独执行这些操作时,它们工作正常。因此,如果我运行这两个意图之一,应用程序将正常工作。我尝试从新加载的活动(AnActivity)中调用 DictionaryService 意图,但这会导致相同的错误。此外,对于模拟器,它分配了 1024 Mb 的 RAM,因此它不像没有足够的内存。有任何想法吗?
谢谢