我正在爲android創建一個簡單的應用程序,但我正在運行一個奇怪的問題。我有兩個活動,一個Dictionary IntentService。 Dictionary IntentService只是將存儲在資產文件夾中的文本文件讀取到HashMap中。請注意,我在清單中都有兩項活動。Android:意圖導致崩潰
這是我做的:
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分配,因此它不像它沒有足夠的內存。有任何想法嗎?
感謝
「仿真器也具有1024 Mb的RAM分配,所以它不像它沒有足夠的內存」 - 在模擬設備中有多少RAM。你的應用程序的堆空間會少得多,在16-96MB的範圍內。 – CommonsWare 2013-05-03 00:15:36
你正在閱讀的文件有多大? – Santa 2013-05-03 00:50:20
@Santa這個文件是2.5 MB,那麼你估計得太大了嗎?如果是這樣,我應該找到另一種實現字典功能的方式嗎? – Argilium 2013-05-03 01:22:18