Служба переднего плана работает в отдельном потоке для действия «вызов». У меня есть обычная кнопка в том действии, что я хочу остановить службу, но она не получает события 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 не получает события клика.