2016-03-02 614 views
0

我在互联网连接时自动调用Web服务时创建了一个活动中的一个接收器。OnReceive()方法自动触发

类似的代码

//Create receiver for while network will come auto call webservice 

private BroadcastReceiver mConnReceiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     boolean noConnectivity = intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false); 
     if (!noConnectivity) { 
      bar.setVisibility(View.VISIBLE); 
      callAuthorizeWebservice(); 
     } else { 
      bar.setVisibility(View.INVISIBLE); 
      Toast.makeText(SplashScreenActivity.this, "Check Your Internet connection", Toast.LENGTH_LONG).show(); 
     } 
    } 
}; 

@Override 
    protected void onStop() { 
     super.onStop(); 
     unregisterReceiver(mConnReceiver); 
    } 

    @Override 
    protected void onStart() { 
     super.onStart(); 
     this.registerReceiver(this.mConnReceiver, 
       new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)); 
    } 

当我打开该活动的onReceive()是方法称为每次。
如何避免第一次调用它(打开该Activity时)?

+0

http://stackoverflow.com/questions/16427812/broadcastreceiver-onreceive-triggered-when-registered – csenga

+0

“如何避免第一次调用它”---你的意思是避免调用它每次除了第一次? – AADProgramming

回答

0

广播是当你注册的第一次(CF持久广播消息)发送,一个解决方案是使用isInitialStickyBroadcastonReceive回调您BroadcastReceiver的知道,如果你实际上是在进行一个持久广播消息并据此采取行动(BroadcastReceiver : isInitialStickyBroadcast