Stopping and starting a Service based on application state

后端 未结 8 1568
北海茫月
北海茫月 2021-01-05 16:45

I have a Service which tracks the location of the user. Currently, the Service boots when the application starts and stops when the application terminates. Unfortunately,

8条回答
  •  Happy的楠姐
    2021-01-05 17:13

    What I would suggest is overriding the onPause/onReume methods as others have said. Without knowing more about the flow of your application and interactions between Activities, I can't give much more information beyond guesswork.

    If your Activities are persistent, however, my recommendation would be to utilize the Intents better when switching between Activities.

    For instance, each Activity should have a boolean "transition" flag. So, when you move from one Activity to the next, you set up an Intent extra:

    intent.putExtra("transition",true);
    

    Followed in the receiving Activity by: (in onCreate)

    intent.getBooleanExtra("transition",false);
    

    This way, for each Activity that launches, you can know whether it has come from another Activity, or if it has been launched from a home screen launcher. Thus, if it gets a true transition, then onPause should NOT stop the service--that means you will be returning to the previous Activity after it returns. If it receives no "transition" extra, or a false transition, then you can safely assume there is no Activity underneath it waiting to take over for the current one.

    On the first Activity, you will simply need to stop the service if you are switching to another Activity, which you should be able to figure out programmatically if one Activity is started from another.

提交回复
热议问题