ServiceからBroadcastするときなどIntentにアクション名を設定しますが、これは他と重複しないものにする必要があります。Serviceのパッケージ名+クラス名+アクション名にしておくと安全ですが、タイプするのは面倒だし、パッケージ名が変わった時、合わせて修正するのも面倒。
このようにすると便利だと思います。
class Service1 : Service() {
companion object {
val ACTION_HOGE: String
get() = javaClass.canonicalName + ".HOGE"
}
private fun sendBroadcast() {
val intent = Intent(ACTION_HOGE)
LocalBroadcastManager.getInstance(context).sendBroadcast(intent)
}
CannonicalNameでパッケージ名+クラス名が得られるので、それにアクション名を足せばユニークになります。
特定のクラスでだけ使う設定をSharedPreferenceで保存する時のキー名も同じようにできますね。
val pref = context.getSharedPreferences(javaClass.canonicalName, Context.MODE_PRIVATE)
val editor = pref.edit()
editor.putInt("value1", 100)
editor.commit()