Как начать работу со службы?

Можно ли запустить Activity из службы? Если да, как мы можем достичь этого?

android.app.Service является потомком android.app.Context поэтому вы можете напрямую использовать startActivity . Однако, поскольку вы запускаете это за пределами любой активности, вам нужно установить флаг FLAG_ACTIVITY_NEW_TASK в намерении.

Например:

 Intent i = new Intent(); i.setClass(this, MyActivity.class); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(i); 

Где this ваш сервис.

Даже если структура позволяет вам запускать Activity из службы, это, вероятно, не является правильным решением. Причина в том, что задача Service может быть или не быть в центре внимания пользователя в момент, когда Служба желает взаимодействовать с пользователем. Прерывание того, что делает пользователь в настоящее время, считается плохой формой дизайна, особенно из-за того, что предполагается использовать в фоновом режиме.

Поэтому вам следует рассмотреть возможность использования службы уведомлений с уведомлением, в которой PendingIntent запускает требуемое действие, когда пользователь решает, что пора исследовать. Думайте об этом как о задержанном удовлетворении.

Это, безусловно, решит вашу проблему

 Intent intent = new Intent(); intent.setAction(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_LAUNCHER); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); ComponentName cn = new ComponentName(this, TaxiPlexer.class); intent.setComponent(cn); startActivity(intent); 

У меня возникла проблема с запуском службы из службы, это было связано с отсутствием флаг намерения FLAG_ACTIVITY_NEW_TASK.