@Override public void onDestroy() { Log.i(TAG, "onDestroy()"); if (ReceiverService.running()) { stopReceiving(); } toast("Message receiver stopped"); super.onDestroy(); }
private void stopReceiving() { new Thread( new Runnable() { @Override public void run() { synchronized (lock) { InetAddress[] addresses; try { addresses = InetUtils.getLocalAddresses(); } catch (SocketException ex) { Log.e(TAG, "", ex); return; } for (int i = 0; i < addresses.length; i++) { try { Socket serv = new Socket(addresses[i], PORT); serv.getOutputStream().write(FLAG_STOP_ALL); serv.close(); } catch (IOException ex) { // Log.e(TAG, "", ex); Log.i(TAG, "Address " + addresses[i] + " already stopped"); } } } } }) .start(); try { waiter.acquire(); } catch (InterruptedException ex) { Log.e(TAG, "", ex); } Log.i(TAG, "Receiving stopped"); toast("Receiving stopped"); Intent intent = new Intent(ACTION_UPDATE_RECEIVER); sendBroadcast(intent); }