У меня запущена служба переднего плана, но операция, которая запустила службу, не отвечает - PullRequest
0 голосов
/ 14 апреля 2020

Служба переднего плана работает в отдельном потоке для действия «вызов». У меня есть обычная кнопка в том действии, что я хочу остановить службу, но она не получает события Click во время работы службы. Назначение кнопки - прекратить обслуживание. Служба использует функцию Android Camera2, делая непрерывные снимки, пока кнопка Stop не будет остановлена. Если служба не запущена, кнопка получает события просто отлично. Любая идея, что я должен сделать, чтобы это исправить. Вероятно, стоит отметить, что я запускаю службу переднего плана в отдельном потоке, я думал, что основной поток пользовательского интерфейса будет реагировать на события нажатия кнопки, но ... ммм, нет. Любая помощь будет оценена ... Вот код деятельности, который запускает службу переднего плана:

public void startService() {
        //========================================================================
        Thread t = new Thread(){
            public void run(){
                Intent serviceIntent = new Intent(CameraActivity.this, Camera2Service.class);
                serviceIntent.putExtra("ipaddress", m_ipaddress);
                serviceIntent.putExtra("orientation", m_orientation);
                serviceIntent.putExtra("tolerance", m_tolerance);
                ContextCompat.startForegroundService(CameraActivity.this, serviceIntent);
                //);
            }
        };
        t.start();
}

Вот код службы (только функция OnStartCommand)

 @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.d(TAG, "onStartCommand flags " + flags + " startId " + startId);
        if (intent != null) { //sjm added 04/07/2020
            m_ipaddress = intent.getStringExtra("ipaddress");
            m_orientation = intent.getStringExtra("orientation");
            m_tolerance = intent.getStringExtra("tolerance");
            String fPath = Environment.getExternalStorageDirectory()
                    + File.separator + "generated" + File.separator;
            //String fName  = fPath + timestamp + "-" + "dummy.jpg";
            m_filename = fPath + "dummy.jpg";

            readyCamera();
        }
        else
            Log.d(TAG,"onCreate service");
        return super.onStartCommand(intent, flags, startId);
    }

Там, очевидно, намного больше кода для службы, которая все работает нормально. Это просто проблема с тем, что Activity не получает события клика.

...