0

私はNullPointerExceptionがアプリが殺されている場合

@Override 
    public void onCreate() { 
     broadcaster = LocalBroadcastManager.getInstance(this); 
     map = new HashMap<>(); 
     beaconFilterModel = new BeaconFilterModel(); 
     stateList = new ArrayList<>(); 
     lastUpdateMap = new HashMap<>(); 
     waitingForExit = new HashMap<>(); 
     firstFind = false; 
     proximityBeaconList = new ArrayList<>(); 
     previousProximityMap = new HashMap<>(); 
     mHandler = new Handler(); 
     KontaktSDK.initialize("MdahnpkIOBvCxfOOmCKHtCdTaEXaqcSx"); 
     proximityManager = new ProximityManager(this); 
     proximityManager.setIBeaconListener(createIBeaconListener()); 
     proximityManager.filters().iBeaconFilter(new IBeaconFilter() { 
      @Override 
      public boolean apply(IBeaconDevice iBeaconDevice) { 

       return compareMajor(beaconFilter, iBeaconDevice) 
         && compareUUID(beaconFilter, iBeaconDevice) 
         && compareMinor(beaconFilter, iBeaconDevice); 
      } 
     }); 
     proximityManager.connect(new OnServiceReadyListener() { 
      @Override 
      public void onServiceReady() { 

       proximityManager.configuration().scanPeriod(ScanPeriod.RANGING); 
       proximityManager.startScanning(); 
      } 
     }); 
    } 

ここでonStartCommand()

@Override 
public int onStartCommand(Intent intent,int flags, int startId) { 
    if (BluetoothAdapter.getDefaultAdapter() == null ||!BluetoothAdapter.getDefaultAdapter().isEnabled()) { 
     this.stopSelf(); 
    } 
    // If we get killed, after returning from here, restart 
    return START_STICKY; 
} 

を次は私のcompareUUID

public boolean compareUUID(BeaconFilterModel beaconFilterModel, IBeaconDevice iBeaconDevice) { 
    if(beaconFilterModel.getUuid().isEmpty() || beaconFilterModel.getUuid() == null) { 
     return true; 
    } else { 
     return UUID.fromString(beaconFilterModel.getUuid()).equals(iBeaconDevice.getProximityUUID()); 
    } 
} 

私のサービスでは、以下のonCreate()でいますさて、私は、アプリケーションが実行されているとき、サービスは動作します正しく。しかし、私は私のApを殺して再起動すると、私のアプリはスタックトレースでクラッシュします:

Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.isEmpty()' on a null object reference 
     at com.nicbit.proximitydemo.services.ProximityScanService.compareUUID(ProximityScanService.java:68) 
     at com.nicbit.proximitydemo.services.ProximityScanService$1.apply(ProximityScanService.java:110) 
     at com.nicbit.proximitydemo.services.ProximityScanService$1.apply(ProximityScanService.java:105) 
     at com.kontakt.sdk.android.ble.discovery.ibeacon.IBeaconParser.filter(IBeaconParser.java:100) 
     at com.kontakt.sdk.android.ble.discovery.ibeacon.IBeaconDiscoverer.performDiscovery(IBeaconDiscoverer.java:59) 
     at com.kontakt.sdk.android.ble.service.DefaultBluetoothDeviceDiscoverer.performDiscovery(DefaultBluetoothDeviceDiscoverer.java:35) 
     at com.kontakt.sdk.android.ble.service.MonitorCallback$1.run(MonitorCallback.java:53) 
     at android.os.Handler.handleCallback(Handler.java:739) 
     at android.os.Handler.dispatchMessage(Handler.java:95) 
     at android.os.Looper.loop(Looper.java:152) 
     at android.app.ActivityThread.main(ActivityThread.java:5507) 
     at java.lang.reflect.Method.invoke(Method.java) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

P.S. beaconFilterModelが変更条件チェックの順序static

+0

あなたはモデルにログを記録しましたか? – Noorul

+0

なぜthis.stopSelf();を使用しているのですか? – Noorul

+0

サービスはBlueToothに依存しているため、BTがオンでない場合はサービスを停止します。 –

答えて

3

である:最初のオブジェクトを使用する前に

、それはヌル・オブジェクトを参照して確認しなければなりません。

if(beaconFilterModel.getUuid() == null||beaconFilterModel.getUuid().isEmpty()){ 

    } 
+0

しかし、事は、文字列が空ではないことを知っています。 –

+0

@AyushGupta **空ではない**ならば、なぜクラッシュするのですか? – Gattsu

+0

これは問題です –

関連する問題