How to detect if any of my activity is front-most and visible to user?

前端 未结 5 1284
醉酒成梦
醉酒成梦 2020-11-29 08:19

I would like to launch an intent when any of my activity is visible, otherwise I will put it up as a notification, and will be fired by the user.

To decide this, I

5条回答
  •  陌清茗
    陌清茗 (楼主)
    2020-11-29 08:59

    I don't know that there's a method to get the currently displayed activity, but you could do something combining the Activity Lifecycle and a flag.

    For the flag, if you've extended the Application class, that's probably a decent place to store it. For extending the application class, the top answer to this question has info. (d).

    So probably keep track of the current active activity (or a flag that the activity is visible) in onResume/onPause or onStart/onStop depending on exactly what behavior you want.

    Since you have multiple activities, you'll need a centroid place for storing the flag, which is why the Application makes sense. You can get the custom Application object by casting the application context (e.g. ((MyApplication)getApplicationContext()).isMyActivityActive).

    You could extend Activity as well to help keep this code clean and contained.


    If you're using a service you could bind to the service in every activity in the onStart/onStop (or onResume/onPause). If bound, you're visible.

提交回复
热议问题