通知未使用android应用程序关闭?

通知未使用android应用程序关闭?,android,notifications,exit,Android,Notifications,Exit,我以android中创建无线流为例 我已经添加了下面的代码以退出放射性.java 此处,我的应用程序正在退出,但通知正在运行,这是我的通知类 有人能建议我如何在退出时关闭整个应用程序吗 或者将通知服务和主活动结合起来,这样我就可以完全退出应用程序 是完整的参考代码 有人能给我推荐这种吗 更新1 我在主要活动中提供退出选项,而不是在其他服务中 我的主要活动是放射性.java,我的服务是RadioPlayerService.java 所以在这里我给退出的主要活动,所以我什么我需要的意思是,而不是退出

我以android中创建无线流为例

我已经添加了下面的代码以退出放射性.java

此处,我的应用程序正在退出,但通知正在运行,这是我的通知类

有人能建议我如何在退出时关闭整个应用程序吗

或者将通知服务和主活动结合起来,这样我就可以完全退出应用程序

是完整的参考代码

有人能给我推荐这种吗

更新1

我在主要活动中提供退出选项,而不是在其他服务中 我的主要活动是放射性.java,我的服务是RadioPlayerService.java

所以在这里我给退出的主要活动,所以我什么我需要的意思是,而不是退出主要活动,它应该退出整个应用程序,包括服务

不要在没有评论的情况下否决投票不要在没有看到完整sourcode的情况下发表评论


再次感谢

因此,基本上您可以做的是,当您在对话框上单击“是”时,您应该通过调用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),我建议您不要使用它。使用它不是一种好的编程风格。有一个方法叫做
finish()

  • 您不需要调用
    System.exit(0)
    来终止
    活动
    ,只需调用
    Activity.finish()
关闭应用程序
您可以将活动设置为单个实例,以便从您调用设备的任何位置返回堆栈中的相同活动

在Manifest.xml中

“…android:launchMode=“singleInstance”>

要避免调用同一
活动的多个实例的
Intent
,请从
Intent
中删除
FLAG\u Activity\u NEW\u TASK
标志,并添加
FLAG\u Activity\u CLEAR\u TOP
一个

从文件:

标记\活动\清除\顶部
如果已设置,则正在启动的活动为 已在当前任务中运行,而不是启动新任务 该活动的实例,以及它上面的所有其他活动 将关闭,并将此意图交付给(现在位于顶部) 旧的活动作为新的意图

标记活动新任务
如果设置,此活动将成为此历史堆栈上新任务的开始


清除所有通知 更新1
你的意思是,当你从活动返回时,你想清除所有通知并停止播放吗?是的,换句话说,当应用程序退出或关闭时,它的退出或强制关闭通知
android.os.Process.killProcess(android.os.Process.myPid());System.exit(0);
不是关闭活动的好方法OK@MaňishYadav你能建议我如何退出整个应用程序,包括通知吗谢谢Manish Yadav你的代码无效,但媒体播放器没有关闭,但添加后它已退出所有东西mRadioManager.disconnect();这里是您的服务行动,我的通知是您可以更新您的服务吗answer@Don“t你能告诉我你的放射性,你是如何开始你的无线电服务的吗?或者你能粘贴你放射性的链接吗?我会相应地更新:)请查看无线电服务在库中的全部代码,但在我的代码中我合并了both查看完整的源代码和Up-Vote Don-Down-Vote pleserefering@Don't请检查我的答案,我已经在查看您共享的代码后更新了代码,我不会对任何帖子投反对票,不要担心:)@don't请检查您的RadioService类中的onDestroy并调用stopFromNotification方法,这将解决所有问题实际上,我给主活动本身提供了退出选项radioactivty.java您能更新您的answer@Don“tBenegative请检查我已更新的完整解决方案,这可能会有所帮助。如果您仍有prb,请在此处发表评论:-)#soReadyToHelp请勿否决请使用AKS@Manish Yadav先生……您的代码运行良好,但收音机未关闭,而是自动对焦添加此项后,它将退出所有东西mRadioManager.disconnect();
   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();
Intent homeIntent = new Intent(Intent.ACTION_MAIN);
homeIntent.addCategory( Intent.CATEGORY_HOME );
homeIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(homeIntent);
NotificationManager nMgr = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
nMgr.cancelAll();
@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();

}