[英]How to keep broadcast receiver running in background?
我有一個廣播接收器。 但是當活動關閉時它會破壞....我如何讓它在后台運行。 我知道我可以通過使用服務來做到這一點......但是我如何在服務中實現它?
開始:
@Override
protected void onStart() {
super.onStart();
private final BroadcastReceiver broadcast = new Broadcast();
IntentFilter filter = new IntentFilter("Update Player");
registerReceiver(broadcast, filter);
isReceiverRegistered = true;
}
播送:
///BroadcastReceiver
public class Broadcast extends BroadcastReceiver {
@Override
public void onReceive(Context context, final Intent intent) {
String action = intent.getAction();
if (action.equalsIgnoreCase("Update Player")) {
position = intent.getIntExtra("position_2", -1);
setTextView();
byte[] image = getArt(PlayingScreen_List.get(position).getPath());
if (image != null) {
Glide.with(getApplicationContext()).asBitmap()
.load(image)
.into(profile_image);
} else {
Glide.with(getApplicationContext()).asBitmap()
.load(R.drawable.allsongs)
.into(profile_image);
}
}
}
}
暫停:
@Override
protected void onPause() {
super.onPause();
if (isReceiverRegistered) {
unregisterReceiver(broadcast);
isReceiverRegistered = false;
}
}
您需要創建擴展到Service
的 class 。 添加內部 class 到它延伸到BroadcastReceiver
。 查看此代碼。
public class MyService extends Service {
BroadcastReceiver broadcastReceiver;
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// do something
}
// constructor
public MyReceiver(){
}
}
@Override
public void onCreate() {
// create IntentFilter
IntentFilter intentFilter = new IntentFilter();
//add actions
intentFilter .addAction("com.example.NEW_INTENT");
intentFilter .addAction("com.example.CUSTOM_INTENT");
intentFilter .addAction("com.example.FINAL_INTENT");
//create and register receiver
broadcastReceiver = new MyReceiver();
registerReceiver(broadcastReceiver, intentFilter );
}
}
在您的清單中添加此代碼:
<receiver android:name="MyReceiver">
<intent-filter>
<action android:name="com.example.NEW_INTENT">
</action>
<action android:name="com.example.CUSTOM_INTENT">
</action>
<action android:name="com.example.FINAL_INTENT">
</action>
</intent-filter>
</receiver>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.