2016-12-27 7 views
1

Я последовал RadioPlayerService как пример для создания потока радио в андроидеУведомление не закрывается с андроидом приложения?

Я добавил следующий код, чтобы выйти в RadioActivity.java

@Override 
    public void onBackPressed() { 

     AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this); 
     alertDialogBuilder.setTitle("Exit ! Radio App."); 
     alertDialogBuilder 
       .setMessage("Click Yes to Exit!") 
       .setCancelable(false) 
       .setPositiveButton("Yes", 
         new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, int id) { 
           moveTaskToBack(true); 
           android.os.Process.killProcess(android.os.Process.myPid()); 
           System.exit(0); 

          } 
         }) 

       .setNegativeButton("No", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) { 

         dialog.cancel(); 
        } 
       }); 

     AlertDialog alertDialog = alertDialogBuilder.create(); 
     alertDialog.show(); 

    } 

Вот мое приложение выход, но уведомление this - мой класс уведомления

Может ли кто-нибудь предложить мне Как убить все приложение на выходе

Или сочетать службу уведомлений и основной деятельности, так что я могу выйти из приложения полностью

This является полным шифром

Может ли один предложить мне на этот вид

Update 1

Я предоставляю возможность выхода в основной деятельности не в другой службе Основное направление деятельности: RadioActivity.java, и мой сервис RadioPlayerService.java

Итак, здесь я даю выход основной деятельности, поэтому мне нужны средства вместо выхода из основной деятельности. Он должен выйти из всего приложения, включая сервис.

Не вниз голоса без комментариев не комментировать, не видя полную sourcode ..

Еще раз спасибо

+0

вы имеете в виду, когда вы вернетесь из вашей деятельности вы хотите, чтобы очистить все уведомления и прекратить играть? –

+0

да, другими словами, его выход или принудительное закрытие уведомления, когда приложение завершено или закрыто –

+0

'android.os.Process.killProcess (android.os.Process.myPid()); System.exit (0); 'не является хорошим способом закрыть активность – Gattsu

ответ

2

Вы использовали System.exit(0);, я хотел бы рекомендуем вам не использовать его. Это не хороший стиль программирования. Существует метод, называемый finish();

  • Вам не нужно звонить System.exit(0) расторгнуть Activity, просто Activity.finish()

закрыть приложение

Intent homeIntent = new Intent(Intent.ACTION_MAIN); 
homeIntent.addCategory(Intent.CATEGORY_HOME); 
homeIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(homeIntent); 

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

В Manifest.xml

"... Android: launchMode =" SingleInstance ">

Чтобы избежать Intent вызвать несколько экземпляров одного и того же Activity удалить FLAG_ACTIVITY_NEW_TASK флаг из Intent и добавить FLAG_ACTIVITY_CLEAR_TOP один

От Doc:.

FLAG_ACTIVITY_CLEAR_TOP
Если установлено, и запущенная деятельность уже запущена в текущей задаче, то вместо запуска нового экземпляра этой деятельности все остальные действия поверх нее будут закрыты, и это намерение будет доставлено к (сейчас сверху) старая деятельность как новое намерение.

FLAG_ACTIVITY_NEW_TASK
Если установлено, это действие станет началом новой задачи в этом стеке истории.


Очистить все Уведомление

NotificationManager nMgr = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
nMgr.cancelAll(); 

Update1

@Override 
public void onBackPressed() { 

    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this); 
    alertDialogBuilder.setTitle("Exit ! Radio App."); 
    alertDialogBuilder 
      .setMessage("Click Yes to Exit!") 
      .setCancelable(false) 
      .setPositiveButton("Yes", 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int id) { 

          mRadioManager .disconnect();// after adding this its also closed radio player 
          NotificationManager nMgr = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
          nMgr.cancelAll(); 
          Intent homeIntent = new Intent(Intent.ACTION_MAIN); 
          homeIntent.addCategory(Intent.CATEGORY_HOME); 
          homeIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
          startActivity(homeIntent); 

         } 
        }) 

      .setNegativeButton("No", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 

        dialog.cancel(); 
       } 
      }); 

    AlertDialog alertDialog = alertDialogBuilder.create(); 
    alertDialog.show(); 

} 
+1

На самом деле я предоставляю возможность выхода на основную деятельность самостоятельно radioactivty.java, вы можете обновить свой ответ –

+1

@ Don'tBenegative pls проверить полное решение, которое я обновил это может помочь. если у вас все еще есть prb, тогда прокомментируйте здесь :-) #soReadyToHelp * не спускайте вниз пожалуйста * – Gattsu

+1

спасибо @Manish Yadav sir ...... ваш код работал хорошо, но радио-плеер не закрыт, но после добавления этого его все вышло mRadioManager .disconnect(); –

0

поэтому в основном то, что вы можете сделать это, когда вы щелкаете да на вашем диалоге, вы должны убейте свою деятельность, вызвав функцию finish(), а также вы должны остановить свою службу или если она привязана к вашей деятельности, вы можете избежать вызова stopService и автоматически отвязаете, когда ваша активность будет уничтожена, вызывая Finish(), проверьте код ниже

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this); 
     alertDialogBuilder.setTitle("Exit ! Radio App."); 
     alertDialogBuilder 
       .setMessage("Click Yes to Exit!") 
       .setCancelable(false) 
       .setPositiveButton("Yes", 
         new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, int id) { 
           moveTaskToBack(true); 
           //this will unbind the radioService 
           mRadioManager.disconnect(); 
           finish(); 

          } 
         }) 

       .setNegativeButton("No", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) { 

         dialog.cancel(); 
        } 
       }); 

     AlertDialog alertDialog = alertDialogBuilder.create(); 
     alertDialog.show(); 

и в вашем RadioPlayerService, переопределить OnDestroy метод и вызвать публичный метод метод stopFromNotification() также

+0

Вот что такое your_service_action в намерении Мое уведомление [this] (https://github.com/iammert/RadioPlayerService/blob/master/library/src/main/java/co/mobiwise/library/radio/RadioPlayerService.java) вы можете уточнить свой ответ –

+0

@ Don'tBenegative вы можете рассказать мне в своей RadioActivity, как вы начинаете свой RadioService или можете вставить ссылку своей RadioActivity. я буду обновлять соответственно :) –

+0

Пожалуйста, просмотрите весь код, который радиослужба находится в библиотеке, но в моем коде, который я объединил, см. полный исходный код и upvote dont downvote plese без ссылки –