1

is it possible somehow to listen to the events of the ActivityManager, e.g. when activities are started? Does the ActivityManager send broadcasts? I havn't found anything indicating that it does.

What I basically need to do: I want my app to launch one of my activities whenever a certain (thirdparty) app is launched/takes focus. Problem is this needs to happen before the thirdparty app is actually displayed.

What I have tried so far as workarounds:

  1. Logcat output: I query logcat every 0.8s (filtered to show ActivityManager events only) but this eats up to many ressources
  2. getRunningTasks: Slows down the phone a lot too and is not very safe, as an activity might be running but not currently in focus

Any ideas?

Vadim Kotov
  • 8,084
  • 8
  • 48
  • 62
ChristianS
  • 63
  • 2
  • 7

3 Answers3

0

I think you can use the launch mode to determine which activity to launch to top level. Please check the question: Android singleTask or singleInstance launch mode?. Maybe it will help you.

Community
  • 1
  • 1
Golden
  • 139
  • 1
  • 1
  • 12
0

I suppose there is no actually other legacy way to handle glabal system state, only

 (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);

ActivityManager.getRecentTasks() - Return a list of the tasks that are currently running, with the most recent being first and older ones after in order.

For details check docs

Perhaps though Android is a Linux you can run system tools like

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

But I think it would be hard to detect particular java application.

ponkin
  • 2,363
  • 18
  • 25
0

I had a look in the android source, but there doesn't seem to be any events broadcasted.

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

Vadim Kotov
  • 8,084
  • 8
  • 48
  • 62
dparnas
  • 4,090
  • 4
  • 33
  • 52
  • Do you think it would be possible to update the Activitylauncher.java in a way that it does broadcast and replace it with the one on the user's device then (for root users only obviously)? I guess this won't work due to the ROM's digital signature. – ChristianS Feb 17 '10 at 11:12