2013-07-02 20 views
5

私はアンドロイドサービスを利用しています。私は、ユーザーがアプリケーションを変更したときにいくつかのタスクを実行したい。私は聞くことができる放送やイベントはありますか?Android:アクティビティの検出/アプリケーションの変更イベント

ポーリングが唯一の解決策であれば誰でも良いポーリング手法を提案できますか?

ありがとうございました。

+0

あなたは恵みのためにこの質問を開く必要が

は、この質問は、すでに前にせずに尋ねたと十分な答えを得ていないされてのように思えます。私の答えは明らかに受け入れられる価値のある答えではありません。私は可能な解決策についても不思議です –

答えて

1

あなたは、トップの活動のためのポーリングによってアプリケーションを識別することができます

private String lastPackageName; 

ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE); 
// get the info from the currently running task 
List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1); 

    Log.d("topActivity", "CURRENT Activity ::" 
      + taskInfo.get(0).topActivity.getClassName()); 

ComponentName componentInfo = taskInfo.get(0).topActivity; 
String packageName = componentInfo.getPackageName(); 

if(lastPackageName != packageName){ 
    //Probably application changed 
} 

lastPackageName = packageName; 

しかし、それはあなたがその情報をポーリングどの程度の頻度で行うかはあなた次第となります..あなたはこの情報については、ユーザーが戻って押すたびにポーリングを試みることができます、ホームボタンや画面上のプレス..それは明らかにあまりにも悪いポーリングのテクニックになります。 How to be notified when foreground (top) activity (application) changes

出典:https://stackoverflow.com/a/4753333/1276374

+4

"ユーザーが押すたびにこの情報のポーリングを試みることができます。ホームボタンや画面上の押しボタン" - サービスは、もの。 – CommonsWare

-2

AndroidデベロッパーサイトでNotifications documentを確認してください。インターネット接続の変更中またはデバイスの再起動中、またはデバイスのシャットダウン中に通知を表示できます。

関連する問題