1

Web 2.0 テクノロジに基づくアプリケーションがあります。基本的には phonegap/titanium アプローチを使用して Web ブラウザを起動します。ほとんどのアプリケーションは JavaScript と HTML (より正確には jQuery) で記述されています。アプリはエミュレーターでは問題なく動作しますが、G1 で起動するとクラッシュします。アプリ用に記述された JavaScript の量を減らすと、再び機能し始めます。または、javascriptInterface を削除して「Java」ベースのメソッドの一部にアクセスすると、アプリも機能します。

アプリに必要なすべての JavaScript および Java オブジェクトをロードしようとすると、クラッシュします (以下のログのように)。Webkit にロードできる「コード」メモリの量に厳しい制限はありますか? クレイジーなことは、このアプリが多くの画像を使用していることです。それは問題なくロードされます.. Webkit に解析してロードできる JavaScript の行数に制限がかかっているようです。問題である可能性がある「開いているファイルが多すぎます」というメッセージが表示されますが、実際にはアプリケーションでファイルを開いていないため、このエラーに混乱しています。

助けてくれてありがとう。私はここ数日、これに苦労してきました。

07-03 16:43:23.430: DEBUG/dalvikvm(104): GC freed 964 objects / 41632 bytes in 285ms
07-03 16:43:24.030: DEBUG/dalvikvm(314): GC freed 710 objects / 23680 bytes in 131ms
07-03 16:43:24.380: INFO/ActivityManager(62): Process android.process.im (pid 220) has died.
07-03 16:43:24.650: DEBUG/dalvikvm(104): GC freed 964 objects / 41688 bytes in 154ms
07-03 16:43:24.700: ERROR/IMemory(104): cannot dup fd=1023, size=1048576, err=0 (Too many open files)
07-03 16:43:24.700: ERROR/IMemory(104): cannot map BpMemoryHeap (binder=0x4fe260), size=1048576, fd=-1 (Bad file number)
07-03 16:43:24.820: ERROR/JavaBinder(104): *** Uncaught remote exception!  (Exceptions are not yet supported across processes.)
07-03 16:43:24.820: ERROR/JavaBinder(104): java.lang.RuntimeException: No memory in memObj
07-03 16:43:24.820: ERROR/JavaBinder(104):     at android.database.CursorWindow.native_init(Native Method)
07-03 16:43:24.820: ERROR/JavaBinder(104):     at android.database.CursorWindow.<init>(CursorWindow.java:467)
07-03 16:43:24.820: ERROR/JavaBinder(104):     at android.database.CursorWindow.<init>(CursorWindow.java:27)
07-03 16:43:24.820: ERROR/JavaBinder(104):     at android.database.CursorWindow$1.createFromParcel(CursorWindow.java:442)
07-03 16:43:24.820: ERROR/JavaBinder(104):     at android.database.CursorWindow$1.createFromParcel(CursorWindow.java:445)
07-03 16:43:24.820: ERROR/JavaBinder(104):     at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:95)
07-03 16:43:24.820: ERROR/JavaBinder(104):     at android.os.Binder.execTransact(Binder.java:287)
07-03 16:43:24.820: ERROR/JavaBinder(104):     at dalvik.system.NativeStart.run(Native Method)
4

3 に答える 3

4

エミュレータを介してアプリを常に再インストールしている場合、Androidの「リンク解除」プロセスにバグがあるため、携帯電話のメモリが不足することがあります。

このエラーが発生しました:com.android.ddmlib.SyncException:開いているファイルが多すぎます-メモリを解放するために電話を再起動する必要がありました。

うまくいけば、開発日にこれを1〜2回行うだけで済みます。幸運を!

于 2011-01-26T13:46:39.940 に答える
1

javascript とは多少無関係であることが判明しました。Java 内から一度に大量の連絡先を読み込んでいたため、この大きな JSON オブジェクトを JavaScript ブリッジを介して公開すると、メモリの問題が発生しました。つまり、連絡先が 1000 件あると、問題が発生します。10 の連絡先はすべて問題ありませんでした。問題はエミュレータに表示されなかったので、g1 に固有のものだと思いました。しかし、私は他の数の連絡先を見落としていました。

于 2009-07-05T16:54:47.093 に答える