After this data is saved A doesn't really need to ask B service again, but it does so just in case the user erases B's data (in that case data will be created over again on the next call).
Then monitor ACTION_PACKAGE_DATA_CLEARED
broadcasts to know when the user erase's B's data. You can do this from a manifest-registered receiver, so neither App A nor App B need to be running for you to find out that the user cleared B's data.
I don't really know how battery expensive it is to call a service every 3 seconds
Keeping two apps running constantly, with IPC and disk I/O every three seconds, is the sort of thing that may get you burned in effigy.