Android 安卓:导致崩溃的意图

Android 安卓:导致崩溃的意图,android,android-intent,Android,Android Intent,我正在为android创建一个简单的应用程序,但我遇到了一个奇怪的问题。我有两个活动和一个词典服务。Dictionary IntentService只是将存储在assets文件夹中的文本文件读入HashMap。请注意,我在清单中有这两个活动 这就是我所做的: Intent intent = new Intent(this, AnActivity.class); startActivity(intent); Intent intentDict = new Intent(th

我正在为android创建一个简单的应用程序,但我遇到了一个奇怪的问题。我有两个活动和一个词典服务。Dictionary IntentService只是将存储在assets文件夹中的文本文件读入HashMap。请注意,我在清单中有这两个活动

这就是我所做的:

    Intent intent = new Intent(this, AnActivity.class);
    startActivity(intent);
    Intent intentDict = new Intent(this, DictionaryService.class);
    startService(intentDict);
第一个活动运行正常,加载第二个活动并在Nexus7模拟器上显示其UI。但当它尝试运行第二个意图时,我从内存错误中得到了以下信息:

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)

现在的问题是,当我单独做这些时,它们工作得很好。因此,如果我运行这两个意图中的一个,应用程序就会正常工作。我尝试从新加载的activity AnActivity调用DictionaryService intent,但这会导致相同的错误。此外,在emulator中,它分配了1024MB的RAM,所以它不像没有足够的内存。有什么想法吗


谢谢

如果您在传递大数据时遇到内存异常,那么很可能是Dalvik堆内存不足。即使本例中的机器有1024MB的RAM,Android也会根据您运行的特定设备将每个Dalvik堆限制在16-64MB


要了解更多详细信息,请阅读此信息性回答:

如果有人有类似问题,问题是@santa在之前的评论中指出的文件大小。因此,我将该文件拆分为3个较小的文件,并将其读入,而且它也可以与emulator一起工作,emulator分配了1024 Mb的RAM,因此它不像没有足够的内存—这就是模拟设备中有多少RAM。您的应用程序的堆空间将大大减少,大约在16-96MB范围内。您正在读取的文件有多大?@Santa该文件有2.5MB,您认为太大了吗?如果是,我是否应该找到另一种实现字典功能的方法?