2016-12-18 13 views
0

私は、サービスをアクティビティのライフタイムを超えて生きているようにしています。携帯電話間でAndroidサービスのライフサイクルが異なる

アクティビティとは異なるプロセスでアクティビティを開始する2台の携帯電話(Samsung Galaxy S6とSony Xperia Z3 Compact)で、サービスが表示されている間にアプリをスワイプして通知を表示すると、サービスが有効になります。

第3の電話機では、Huawei Honor 8と全く同じコードがサービスを破棄し、すぐにスケジュールされたアラームをキャンセルします。

私は10秒ごとにアラームを設定しました(彼らはHuaweiで一度キャンセルされ、Samsung/Sonyで動作します)。また、バックグラウンドでサービスを実行しているときにLocationListenerをアクティブにします。

もう1つの違いは、ワーキング電話のプライオリティMAXと進行中の通知は、スワイプまたはクリアすることで取り消すことはできませんが、Huaweiでも可能です。

バッテリの最適化やその他の設定を何の違いもなく無視するようにリクエストしました。私はまた、画面が消えている間にアプリを殺さないという選択肢を探してみましたが、Huaweiは一度にそうしているようです。

このシナリオについては、アクティビティが強制終了された後、またはアクティブになっていない状態でサービスを実行し続けることができます。メモリが足りない場合、メモリはほとんど消費されないため、アクティビティは行われますが、サービスは実行されません。しかし、この設定では、サービスは即座に殺されます。

可能性のある特定の製造設定を見ても、コードから予測や制御ができませんか?

私はこのタイプの問題で唯一可能な解決策は、サービスが頻繁に生存しているかどうかをチェックするサイレントプッシュを送信し、アクティブにする必要があるときに再起動することですとにかくそれを殺すシステム)。

+0

解決方法はわかりませんが、Playストアで配信していて修正が見つからない場合は、問題のあるデバイスをサポートされているデバイスリストから除外できます。 – nasch

+0

Huaweiには「画面をオフにしないでアプリを殺さない」オプションがありますが、コードでこの値を設定するオプションをまだ見つけていないので、バッテリーを使用すると、optmizationは許可されていないので効果がないようです。 – Deukalion

答えて

0

Huaweiデバイスでは、通知パネルから進行中の通知をスワイプすることができます。これは問題なく動作するはずで修正され、新しいアップデートでうまく動作するため、問題として登録されています。

Huagersがこのタスクを実行するHwSystemManager(PhoneManager)と呼ばれるシステムアプリケーションを持っているため、RecentsActivityからタスクを閉じるときにサービスが終了することに関して。 PhoneManagerを使用して保護されたアプリケーションの下でAPPを保護されたAPPとして有効にすると、サービスが停止せず、アプリケーションが低メモリ状態になるまで、長い間バックグラウンドで動作します。

+0

はい、分かりました。私の質問はもっと似ています - どうすればこの問題を解決するようユーザーに促すことができますか?いくつかの電話機では、カスタムシステムによって設定された特定の値を上書きするための設定があります。特定の時間に実行しないで、ユーザーがそうすることを選択したときにのみ実行するのではなく、特別なプロンプトを必要とする可能性のある電話機のような何らかのシンプルな識別が、画面が消えたときに即座に殺された場合その目的。 – Deukalion

+0

@Deukalion私はHuaweiで働いていたので、保護されたAppリストに追加されていなければ殺されると確信しています。最も頻繁に使用されるすべてのアプリケーションとシステムアプリを保護リストに追加します –

+0

@Deukalionこの動作は、デバイスの高性能で長時間実行されたパフォーマンス –

関連する問題