2

特定のアプリケーションがユーザーに表示される時間を知る必要があるアプリケーションを作成しています。

アプリケーションが開かれたとき、およびアプリケーションがユーザーに表示されなくなったとき (onStop()) に、サービスが受信できるシステム全体のイベントはありますか? それとも、ActivityManager を定期的にポーリングする必要がありますか?

アプリケーション Tasker ( http://tasker.dinglisch.net ) は、特定のアプリケーションがいつ表示/非表示になるかを検出できるようです。彼らは単にActivityManagerをポーリングするだけですか、それともこれについて何か他の方法がありますか?

参照: アプリケーションが実行され
ている時間 Android でアプリケーションが実行されている時間
を知るには?

4

1 に答える 1

-1

アプリが表示されているかどうかは、次の方法で検出できます。

すべてのアクティビティで、次を設定します。

@Override
protected void onResume() {
super.onResume();

VisibilityManager.setIsVisible(true);
}

@Override
protected void onPause() {
VisibilityManager.setIsVisible(false);

super.onPause();
}

(これにより、この動作を実装するすべてのアクティビティにスーパークラスを定義することができます)

次に、VisibilityManager を作成します (これは非常に基本的なものであり、より高度なものが必要になる場合があります)。

public class VisibilityManager {
private boolean mIsVisible = false;

public void setIsVisible(boolean visible) { 
     mIsVisible = visible; 
}

public boolean getIsVisible() {
     return mIsVisible;
}
}

次に、タイマー スレッドで、カウントダウンがゼロに達したときに、アプリケーションを強制終了できます。

if (VisibilityManager.getIsVisible()) {
finish();
}
else {
showNotification();
}
于 2012-06-15T16:26:37.443 に答える