在我的应用中,我有一个广播接收器。
我从 firebase 收到了一条消息,该消息向接收者发送了一个意图。
接收方更新应用程序的状态,并在检查播放器是否启动后再进行检查。
一段时间打开我的应用后,接收器关闭。
当消息到达时,它什么也不做。
为什么会出现这个问题?
谢谢你,我的英语很抱歉。
接收者:
class CustomNotificationReceiver(val presenter: OrderListContract.Presenter,
val ordstatsfilt: String?) : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
if(intent.action == "com.woocommerce.app.NOTIFICATION") {
presenter.loadOrders(ordstatsfilt, forceRefresh = true)
if (inlavorazione > 0) {
try {
var uri: Uri? = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" + context.packageName + "/" + R.raw.cha_ching)
?: null
Log.d("debugsto prendendo il file", "valore uri = $uri")
//verifico l'uri
Log.d("debugsto prendendo il file", "debudcprima" + uri)
if (uri != null) {
Log.d("debugsto prendendo il file", "Sono dentro if uri")
if (!player.isPlaying && urice==0) {
Log.d("firebase", "sono nell'if")
player.setDataSource(context, uri)
Log.d("firebase", "sono nell'if2")
player.prepare();
urice=1
}
if (inlavorazione > 0) {
if (!player.isPlaying) {
Log.d("debugparte il file", "debugparteil file")
try {
Handler().postDelayed({
player.start()
}, 5000)
} catch (e: Exception) {
e.printStackTrace()
}
}
}/*else{
if(player.isPlaying) player.stop()
}*/
player.setOnCompletionListener {
if (inlavorazione > 0) {
if (!player.isPlaying) {
try {
Handler().postDelayed({
player.start()
}, 3000)
} catch (e: Exception) {
e.printStackTrace()
}
}
}/*else{
if(player.isPlaying) {player.stop()
inlavorazione=0}
}*/
}
}
} catch (e: Exception) {
e.printStackTrace();
}
}
}
}
意图:
Intent().also { intent ->
intent.setAction("com.woocommerce.app.NOTIFICATION") //tag per l'azione
//intent.putExtra("data", "Notice me senpai!")
sendBroadcast(intent) //invio l'intent tramite broadcast
}
...
消息到达,inlavorazione ++,发送意图,从db接收接收器,并播放声音。一段时间后,接收器显然不会停止。它不会更新或播放声音。