ServiceからActivityに値を投げたり画面を更新したりする方法
broadcastを使ったデータ連携方法
受け側のActivity
override fun onCreate(savedInstanceState: Bundle?) { ... // receiverを登録する val receiver =object: BroadcastReceiver(){ override fun onReceive(context: Context, intent: Intent) { val extras = intent.extras val msg = extras!!.getString("message") ~すきな処理~ } } ... }
送り側のサービス
...
// onLocationChangedイベントでActivityへ通知
inner class GPSLocationListener: LocationListener {
override fun onLocationChanged(p0: Location?) {
val format = SimpleDateFormat("kk:mm:ss")
val msg="${format.format(Date())} lat:${p0?.latitude} lon:${p0?.longitude}"
Log.d("locCheck",msg)
sendMessage(msg);
}
...
}
// Broadcastメイン
fun sendMessage(msg: String) {
val broadcast = Intent()
broadcast.putExtra("message", msg)
broadcast.action = "DO_ACTION"
baseContext.sendBroadcast(broadcast)
}