2016-05-26 17 views
1

私は、リンガーモードの変更を処理するためにBroadcastReceiverを登録するAndroidアプリを持っています。受信者はマニフェストを通じて登録され、動的には登録されません。一部のユーザーは、アプリを手動で起動してからリンガーモードを変更するとアプリが起動するものの、アプリがリンガーモードの変更に応答しないことがあることを報告するユーザーもいます。しかし、しばらくしてから、アプリケーションはリンガーモードの変更に応答しなくなります。Androidアプリが「停止」状態になっているかどうかを確認する方法は?

症状は、アプリが「停止」状態になっているように疑わしい音がします。私はユーザーが明示的にアプリケーションを閉じることを信じる理由はなく、アプリが「停止」状態になる可能性のある他の方法については気づいていません。

ユーザーは、(ルート以外の)電話機のアプリケーションが停止状態にあるかどうかを判断する方法はありますか?そのため、「停止」状態理論を検証/無効化できますか? 「強制終了」ボタンが有効になっているかどうかは、停止中のアプリだけでなく、現在実行中のアプリでも無効になるため、有効であると考えるのは十分ではないと思います。

+0

この問題を解決できましたか?私は同じように見えます。 –

+0

@GoltsevEugeneいいえ、まだ私の問題です。 –

+0

私はこれに対する答えも探しています。一部のアンドロイドROMには、アプリケーションを強制終了した後に停止状態にする非標準タスクスイッチャーがあるようですが、AOSPタスクスイッチャーはこれをしません。 – davidgyoung

答えて

1

あなたはデバイス上のすべてのアプリケーションを照会し、このコードで停止した状態となるものを見ることができます。

https://github.com/davidgyoung/stopped-app-detector

:私はここにあなたのためにこれを行うユーティリティアプリを作っ
private List<String> getStoppedPackages() { 
    ArrayList<String> stoppedPackages = new ArrayList<String>(); 
    final PackageManager pm = getPackageManager(); 
    List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA); 

    for (ApplicationInfo packageInfo : packages) { 
     boolean appStopped = (packageInfo.flags & ApplicationInfo.FLAG_STOPPED) != 0; 
     if (appStopped) { 
      String description = packageInfo.packageName; 
      stoppedPackages.add(description); 
     } 
    } 
    return stoppedPackages; 
} 

+0

優秀!ありがとう、私はGoogleのgooglerが落ちるまでgoogledしていたし、APIを発見していない。デモアプリを作るためのボーナスポイント。今、私はこの動作を持つAndroid実装のリファレンスリストを構築することができます。 –

+0

あなたがそうであれば、デバイス固有の動作に関するデータを共有することに興味があります。タスクスイッチャーを強制終了した後にサービスを再開できないデバイスが1つ見つかりました。不思議なことに、私は停止状態**にもかかわらず、アプリを殺した後に設定されていないにもかかわらず、これが起こることがわかります。違うが似たような旗があるのだろうかと思う。 – davidgyoung

関連する問題