Androidランチャー(ホーム画面の置換)アプリケーションを開発していて、メモリ不足の状況でランチャーが強制終了されます。ユーザーが家に戻って待たなければならない場合、これは明らかに良くありません。
私の調査では、Androidがプロセスを最高から最低までいくつかの優先度グループに分類していることがわかりました。
システム
持続的
前景
見える
知覚できる
サービス
家
前
Bサービス
バックグラウンド
次のコマンドを実行することで、どのプロセスがどのプロセスに該当するかを調べることができます。adb shell dumpsys meminfo
このトピックに関して私が見つけた最も包括的なドキュメントは次のとおりです。http://developer.android.com/guide/components/processes-and-threads.html#Lifecycle
ただし、上記のすべてのグループを明確に把握できるわけではありません。具体的には、
プロセスはどのように/いつ「知覚可能」と見なされますか?一部のアプリ(Go Launcher EXなど)は、フォアグラウンドにないときにこのカテゴリにとどまる方法を理解しているようです。このように、それは頻繁に殺されることはありません。彼らはそれをどのようにやっていますか?
adb shell dumpsysアクティビティから、GoLauncherExがフォアグラウンドサービスと見なされていることがわかりました。このテーマに関して私が見つけることができる唯一のドキュメントは、ステータスバーに永続的な通知を置く必要があると述べています。しかし、GoLauncherExはどういうわけかこの要件を回避しました。私はどのように道に迷っています:-(
「Aサービス」、「ホーム」、「Bサービス」の違いは何ですか?
通常のアプリよりも高い優先度を取得する方法に関するランチャーアプリケーションに関するその他の一般的なアドバイスはありますか?ランチャーはユーザーにとってほとんどのもの(現在のフォアグラウンドアクティビティを除く)よりも優先度が高いと見なされるべきであることを考えると、これは完全に正当な要求だと思います。