1

アクティビティが開始されたときなど、ActivityManagerのイベントを何らかの方法で聞くことは可能ですか?ActivityManagerはブロードキャストを送信しますか?私はそれがそうすることを示すものを何も見つけませんでした。

基本的に行う必要があること:特定の(サードパーティの)アプリが起動/フォーカスされるたびに、アプリが自分のアクティビティの1つを起動するようにします。問題は、サードパーティのアプリが実際に表示される前にこれを行う必要があることです。

回避策としてこれまでに試したこと:

  1. Logcatの出力:0.8秒ごとにlogcatをクエリします(ActivityManagerイベントのみを表示するようにフィルタリングされます)が、これは多くのリソースを消費します
  2. getRunningTasks:アクティビティが実行されている可能性があるが、現在フォーカスがないため、電話の速度も大幅に低下し、安全性が低くなります。

何か案は?

4

3 に答える 3

0

glabalシステムの状態を処理する他のレガシーな方法は実際にはないと思います。

 (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);

ActivityManager.getRecentTasks()-現在実行中のタスクのリストを返します。最新のものが最初で、その後に古いものが順番に表示されます。

詳細については、ドキュメントを確認してください

おそらくAndroidはLinuxですが、次のようなシステムツールを実行できます。

Runtime.getRuntime().exec("ps -aux | grep smth")

しかし、特定のJavaアプリケーションを検出するのは難しいと思います。

于 2010-02-16T11:45:42.110 に答える
0

Androidのソースを調べましたが、イベントが放送されていないようです。

https://android.googlesource.com/platform/packages/providers/ApplicationsProvider

于 2010-02-17T09:38:42.597 に答える
0

起動モードを使用して、トップレベルに起動するアクティビティを決定できると思います。質問を確認してください:AndroidのsingleTaskまたはsingleInstance起動モード?。多分それはあなたを助けるでしょう。

于 2012-05-12T07:46:56.043 に答える