BroadcastReceiver receives multiple identical messages for one event

后端 未结 6 1398
伪装坚强ぢ
伪装坚强ぢ 2020-12-02 11:10

I registered a receiver that listens to network events:



        
6条回答
  •  囚心锁ツ
    2020-12-02 12:07

    I have an application that uploads data when the user comes back online. Since my broadcast receiver can receive the intent multiple times, it can lead to the data being uploaded more than once. To handle this, I use a service that will not do anything if it is already running.

    Broadcast Receiver:

    public class ConnectionChangeReceiver extends BroadcastReceiver {
        private static boolean firstConnect = true;
    
        @Override
        public void onReceive(Context context, Intent intent) {
            final ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
            final NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();
            if (activeNetInfo != null) {
                startService();
            }   
        }
    }
    

    Service:

    public class MyService extends Service {
        private boolean mRunning;
    
        @Override
        public void onCreate() {
            super.onCreate();
            mRunning = false;
        }
    
        @Override
        public int onStartCommand(Intent intent, int flags, int startId) {
            if (!mRunning) {
                mRunning = true;
                uploadTheData();
            }
            return super.onStartCommand(intent, flags, startId);
        }
    }
    

提交回复
热议问题