Как закрыть активность со службы?

Я запускаю активность из службы на основе некоторого значения, полученного с сервера, и активность будет отображаться в течение некоторого времени, и после получения инструкции с сервера мне нужно закрыть эту активность, поэтому для этого я использовал следующий подход, но это не Рабочая: по классу обслуживания:

if(((ActivityManager)this.getSystemService(ACTIVITY_SERVICE)).getRunningTasks(1).get(0).topActivity.getPackageName().equals("com")) { if(((ActivityManager)this.getSystemService(ACTIVITY_SERVICE)).getRunningTasks(1).get(0).topActivity.getClassName().equals("com.CustomDialogActivity")){ Intent dialogIntent = new Intent(getBaseContext(), CustomDialogActivity.class); dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); dialogIntent.putExtra("description", ""); dialogIntent.putExtra("cancelEnabled", false); dialogIntent.putExtra("close", true); getApplication().startActivity(dialogIntent); } } 

И о деятельности внутри метода onCreate:

 Bundle bundle = getIntent().getExtras(); boolean isClosed = bundle.getBoolean("close"); if(isClosed){ finish(); } 

Я отлаживал его и обнаружил, что элемент управления достигает метода onCreate, если (isClosed) и выполнен метод finish (), но не закрывает активность.

Поэтому я не могу проанализировать, что я делаю неправильно.

Пожалуйста, помогите мне решить эту проблему.

С уважением, Пикс.

Solutions Collecting From Web of "Как закрыть активность со службы?"

Напишите широковещательный приемник в свой CustomDialogActivity, как показано ниже.

 private final BroadcastReceiver abcd = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { finish(); } }; 

Затем зарегистрируйте его в том же файле, как показано ниже:

 onCreate(){ registerReceiver(abcd, new IntentFilter("xyz")); } 

Отмените регистрацию в onDestroy.

 onDestroy(){ //unRegister } 

Теперь, когда вы хотите закрыть эту активность, просто вызовите следующее.

 sendBroadcast(new Intent("xyz")); 

Надеюсь, эта помощь.

Вы должны добавить получателя в манифест для своей деятельности, например:

  <activity android:name="MyActivity"> <intent-filter> <action android:name="xyz" /> </intent-filter> </activity> 

Попробуйте отправить трансляцию с использованием контекста.

 context.sendBroadcast(new Intent("xyz")); 

Ответ от Джайнала работает для меня.