簡體   English   中英

如何讓廣播接收器在后台運行?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM