0
동일한 브로드 캐스트 수신기를 초기화해야하는 두 개의 서로 다른 파일이 있습니다. 결과를 검색하는 데 문제가 있습니다. 어떻게 든 스캔을 시작한 클래스를 제대로 참조 할 수 없기 때문에 null 값이 발생합니다.여러 브로드 캐스트 수신기를 추적하는 방법
다음은 코드 예제입니다.
public void Connection_Logic (Context c)
IntentFilter wififilter;
wififilter = new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
public WifiManager wifiManager;
wifireceiver = serviceConsume.wifireceiver;
c.registerReceiver(wifireceiver, wififilter);
wifiManager.startScan();
}
public class serviceConsume {
public WifiManager wifiMan;
wifiMan = (WifiManager)getBaseContext().getSystemService(Context.WIFI_SERVICE);
public BroadcastReceiver wifireceiver = new Wifi_Broadcast(this);
IntentFilter wififilter;
wififilter = new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
registerReceiver(wifireceiver, wififilter);
wifiMan.startScan();
}
public class Wifi_Broadcast extends BroadcastReceiver {
public ServiceConsume main;
public Connection_Logic ConnLog;
public Wifi_Broadcast(ServiceConsume main) {
super();
this.main = main;
}
public Wifi_Broadcast(Connection_Logic ConnLog) {
super();
this.ConnLog = ConnLog;
}
@Override
public void onReceive(Context c, Intent intent) {
if(main != null) {
List<ScanResults> results = ConnLog.wifiManager.getScanResults();
} else if (ConnLog != null) {
List<ScanResults> results = ConnLog.wifiMan.getScanResults();
}
}
}
결과에 대해 null 값을 얻는 이유는 누구입니까? 내가 잘못 했니? 누군가이 작업에 대한 코드 예제를 가지고 있다면, 고맙겠습니다.
감사합니다. 에서
감사 핀, 즉 실제로 오타했다. 하지만 수신기를 너무 빨리 폴링하는 것과 관련된 문제를 발견했습니다. 너무 빨리 폴링하면 수신자가 더 이상 등록되지 않아 널값이됩니다. 도움에 감사 드리며 논리에 문제가 없다는 사실을 알고 기쁩니다. 감사! – Dave
@Dave - 폴링을 어떻게 신속하게 중지 했습니까? –