Зависает основное приложение, что не так?

314
11 февраля 2017, 06:41
    public class MainActivity extends AppCompatActivity{
    public static String ACTION_BROADCAST="com.eranewgames.bluetoothdoor.broadcast";
    BroadcastReceiver broadcastReceiver;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        broadcastReceiver=new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                Log.e("MainActivity=onReceive", intent.getStringExtra("text"));
            }
        };
        IntentFilter intentFilter=new IntentFilter(MainActivity.ACTION_BROADCAST);
        registerReceiver(broadcastReceiver,intentFilter);
        startService(new Intent(MainActivity.this,ServiceBluetoothDoor.class));
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        stopService(new Intent(MainActivity.this,ServiceBluetoothDoor.class));
        unregisterReceiver(broadcastReceiver);
    }
}

// Service

  public class ServiceBluetoothDoor extends Service {
    String macAddress = "70:72:0D:44:E6:1B";
    // SPP UUID сервиса
    private UUID MY_UUID = UUID.fromString("00001101-0000-6666-8000-00805F23534B");
    BluetoothSocket bluetoothSocket;
    @Override
    public IBinder onBind(Intent intent) {
        // TODO: Return the communication channel to the service.
        throw new UnsupportedOperationException("Not yet implemented");
    }
    @Override
    public void onCreate() {
        super.onCreate();
        BluetoothAdapter bluetoothAdapter=BluetoothAdapter.getDefaultAdapter();
        BluetoothDevice bluetoothDevice=bluetoothAdapter.getRemoteDevice(macAddress);
        bluetoothAdapter.cancelDiscovery();
        try{
            bluetoothSocket=bluetoothDevice.createInsecureRfcommSocketToServiceRecord(MY_UUID);
            bluetoothSocket.connect();
            BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(bluetoothSocket.getInputStream()));
            String line;
            while ( (line=bufferedReader.readLine()) !=null ){
                Log.e("ServiceBluetoothDoor=onCreate", line);
//                Intent intent=new Intent(MainActivity.ACTION_BROADCAST);
//                intent.putExtra("text",dataInputStream.readUTF());
//                sendBroadcast(intent);
            }
            bufferedReader.close();
        } catch (IOException e) { e.printStackTrace(); }
    }
    @Override
    public void onDestroy() {
        super.onDestroy();
        try {
            bluetoothSocket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Зависает MainActivity, но почему ведь он с сервисом не связан

Answer 1

Service отрабатывает в UI потоке. Сделайте работу внутри сервиса в новом потоке, либо используйте IntentService

READ ALSO
JsonRPC маппинг

JsonRPC маппинг

Я создал простую JsonRPC server (Netty socketServer) для выполнения определенных задач, общих для нашей команды, но вызывающиеся из разных сетейСервер получает...

397
Лишние символы в html-разметке

Лишние символы в html-разметке

На странице внезапно появились символы `` c разными вариациями, в зависимости от ОС:

304
Wow.js не работает при overflow:scroll-y

Wow.js не работает при overflow:scroll-y

Всем здравствуйтеПомогите пожалуйста советом

382