参考までに、これは Android で、これはTitanium フォーラムの投稿です。
Appcelerator で行ったいくつかのアプリケーションでこの問題に気付きました。それらはすべて、単純なアプリか複雑なアプリかに関係なく、大規模なアプリでより頻繁に発生します。
たとえば、5 分ごとにその場所 (GPS の場所) を通知する必要があるアプリケーションに取り組んでいます。フォアグラウンドで作業している場合、アプリケーションは完全に機能しますが、アプリをバックグラウンドに置くたびに (ホーム ボタンを使用してアプリを最小化すると)、アプリケーションがクラッシュし、すべてのサービスが停止します。
アプリケーションに通知するために、私が使用しているフローは次のとおりです。
- アプリケーションを起動すると、AlarmManager モジュールを使用してアラームを起動します。
- この AlarmManager は、5 分ごとにトリガーされる新しいアラーム サービスを追加します。
- 5 分ごとに、AlarmManager はサービスを開始し、サーバーに現在の場所を通知します。
これはうまくいきます。
「ホーム」ボタンを押すと、アプリケーションが (Application Manager で) クラッシュすることがありますが、このアプリをバックグラウンドのままにしてフォアグラウンドで他のアプリケーションを使用すると、より頻繁にクラッシュします。
これはメインのActivityが止まったせいだと思ったので、メインのActivity/Taskの状態を維持することにしました。android:alwaysRetainTaskState="true"
アプリケーションを再度開くと、アプリケーションが再起動します。これは、ハイエンド デバイスよりもローエンド デバイスで多く発生するため、これはメモリの問題であると思われます。
いくつか質問があります:
- これは予想される動作ですか?
- もしそうなら、どうすればこれを軽減できますか(おそらくネイティブモジュール/サービスですか?)?
- 私の現在のフローはこれを行うのに最適なフローですか、それともより良いアプローチがありますか?
どんな考えでも大歓迎です。