0

SenchaTouchとphonegapで開発されたアプリがあります。ある時点で、サーバーからデータをダウンロードし、正常な応答を受信すると、次の画面を表示します。iOSアプリとしてバンドルすると、次の画面に移行しますが、何も表示されず、メモリ不足が報告されます。そこで、次の画面のレイアウトを簡略化し(DOM構造はかなり複雑でした)、iOSシミュレーターとiPhoneで機能するようになりました。

ただし、Androidでは、console.logステートメントの出力から、データが正常に取得され、イベントが発生して次の画面が表示されることがわかります。その後、console.logステートメントがその画面の「ペイントされた」イベントが発生したことを示していても、その画面が表示される前に何年もの間存在し続けます。

最終的に、画面は表示されますが、画面上のすべてのコントロールがタッチに反応しなくなります。その画面の構造をさらに単純化する必要があるのでしょうか?ページ構造を簡略化する前にiOSバージョンでメモリ不足の警告が表示されたため、Androidバージョンでも同様の問題が発生している可能性がありますが、メモリ使用量を監視する方法がわかりません。Androidバージョンでは、画面が最終的に表示される直前に、logcatに次のように表示されます。

UpdateFrameCache: pending style recalc, ignoring

また、応答しない画面で、応答しないコントロールの一部(すべてではない)をタップすると、次のように表示されます。

Got ACTION_DOWN but still waiting on stale event. Catching up.

最終的に、アプリは次のように閉じます。

Fatal signal 11 (SIGSEGV) at 0xbbbadbeef (code = 1)

ありがたいことにどんな助けも受けました。

4

1 に答える 1

1

UI スレッドで集中的な計算を実行すると、時間がかかる理由が説明される場合があります。バックゴーンド計算を行う必要がある場合は、 AsyncTaskまたはServiceを使用してみてください。完了したら、UI スレッドでインターフェイスを更新します。

ゴルダク

于 2013-03-10T20:52:54.687 に答える