Android 7.0 Serviceの保守概要

2598 ワード

最近、内部インスタント通信のアプリを開発しましたが、本当に卵が痛いと言ってもいいほど、私はほとんど保活の文章を全部見て、android界は本当に特別な魚龍が混ざっていると言えます.多くの文章は一面的に書かれており、大きな誤解を形成しやすい.まず、最近研究された結論を言います.7.0のこのバージョンには、サムスンや国内のこれらのオリジナルromが含まれています.ユーザーやメーカーの設定を通さなければ、少なくともサービスは絶対に生き残る方法がありません.絶対に、未知のBUGを見つけることができない限り.私も頭が痛いですが、私は本当にグーグルのこのようなやり方に賛成しています.そうしないと、毎日プッシュ通知を受け取るのは本当に気持ちが悪くてだめです.IOSも手動で閉めなければなりません.今androidはすべてを殺して、それからわずかな権限をユーザーに設定して、甚だしきに至ってはappの中で許可をポップアップするapiさえあなたにあげません
1、jniの保活、5.0以前、androidシステム自体はjni層を管理していなかったので、linuxのforkメカニズムを使って、プロセスとappを分けることができて、appを閉じても影響しません.だからその时多くの人はandroidがとてもカードだと言って、幸运なのは私のあの时間使ったiosで、これらのプロセスはユーザーさえ消すことができなくて、本当に気持ち悪いです
2、jobservice、5.0以降、native層でもkill、dozeなどのシステム制限を受けます.つまり、殺すにしても凍結するにしても、あなたが起動した最初のプロセスに関係しているだけで、後で親子の関係ではなく、歴史的なグループの関係で見ています.この歴史の同グループは本当に重要な変化で、実はkillgroupの作用性だけではなくて、どのようにコードを書いても、システムのあなたのappに対する制御から離れられません.例えば、いつ休眠させるかなどです.こんなにたくさん言ったのに、JobServiceと言うべきだ.JobServiceの役割は何なのか.重要な役割と正しい使い方は、appが閉じた後、activity、serviceをアクティブにしたり、コードを実行したりするなど、プロセスのバックグラウンドを自動的に作成したりすることです.しかし、JobServiceはdoze、monitorなどの管理を受けるなど、制限を受けないという意味ではありません.
3、doze、dozeはandroid 6.0の時に現れたのは、スクリーンをロックした後、appに対して一連の管理を行い、dozeは最下位のメカニズムと言える.ホワイトリストapiの提供、実行の遅延など、dozeは友好的だと思います.つまり、各appはあなたに通知を送る機会を与えます.時間は制限されていますが、インスタント通信以外にも十分なはずです.肝心なのは、あなたのプロセスをオフにしていないことです.そしてappでACTION_を許可するとREQUEST_IGNORE_BATTERY_OPTIMIZATIONSでは、dozeはもうあなたのことは気にしません.つまり、インスタント通信ならdozeホワイトリストを追加し、JobServiceで活性化し、デュアルサービスで保護し、基本的には問題ありません.しかし、人は利益のために本当に手段を选ばないで、私に机会を与えるだけで毎日ごみのニュースを出して、绝対にユーザーを暇にさせないで、时々バックグラウンドにデータを送受信して、dozeのandroidに対する改観は明らかな感じがしません.そしていずれかのappがホワイトリストに入り、勝手にweaklockするとシステム環境全体が破壊されます.
4、monitor、monitorはdozeに対する強化実現と見ることができ、携帯電話システム管理の実現であり、ほとんどの7.0のromにはこれがあり、国産ではほとんど100%ある.7.0の时、このmonitorはひっそりと1つの白いリストを多くして、これは本当に1つの质の変化で、ユーザーにいつもGoogleを背负わせます.このモニタはroot権限を使用したappと見なすこともでき、7.0にアップグレードするとデフォルトでオンになっているようです.では、まず同等のroot権限を持つシステムappを排除し、残りのすべてのappを管理します(私がアップグレードしたのはAlipay、WeChat、検索入力法です).その後インストールされるappのデフォルトもsleepingリストにあります.では、それはどれだけ強いのでしょうか.リストのappに対して、appが閉じた後、JobServiceを通じて引き上げても、あなたは15分の生存時間しかありません.この15分の時間を消費すると、ユーザーが次にあなたのappを開くまで、永遠に88と言います.もちろん、ユーザーが手動でappをホワイトリストに追加すると、閉じられてもプロセスは終了しません.こんなにたくさん言って、結論はあなたがdozeホワイトリストの中にいても、何の役にも立たないということです.monitorの中のホワイトリストに入ることができない限り、直接小さな黒い部屋に引き込まれて出られませんよ.
5、もう一つの方法はactivityを活性化することですが、ある程度失敗する確率があります.destroyの時に閉じて活性化するかどうかを判断し、100%成功を保証することはできません.そして、成功はバックグラウンドリストに表示されます.以前、jni層で似たような方法で保護プロセスをしている人がいるのを見たことがあります.閉鎖する前に新しいものを開き、システムと時間を奪うことです.これは実際には合理的ですが、確率的な事件に属しています.JobServiceを使ってactivityをアクティブにするのもアクティブサービスと同じ運命で、結局どうしてもシステム呼び出しのkillgroupを逃がすことができなくて、JobServiceがアクティブにすることができるのは完全に制御可能なわざとあなたに与える機会で、一部の人が言ったBUGではありません