通知未使用android应用程序关闭?
我以android中创建无线流为例 我已经添加了下面的代码以退出放射性.java 此处,我的应用程序正在退出,但通知正在运行,这是我的通知类 有人能建议我如何在退出时关闭整个应用程序吗 或者将通知服务和主活动结合起来,这样我就可以完全退出应用程序 是完整的参考代码 有人能给我推荐这种吗 更新1 我在主要活动中提供退出选项,而不是在其他服务中 我的主要活动是放射性.java,我的服务是RadioPlayerService.java 所以在这里我给退出的主要活动,所以我什么我需要的意思是,而不是退出主要活动,它应该退出整个应用程序,包括服务 不要在没有评论的情况下否决投票不要在没有看到完整sourcode的情况下发表评论通知未使用android应用程序关闭?,android,notifications,exit,Android,Notifications,Exit,我以android中创建无线流为例 我已经添加了下面的代码以退出放射性.java 此处,我的应用程序正在退出,但通知正在运行,这是我的通知类 有人能建议我如何在退出时关闭整个应用程序吗 或者将通知服务和主活动结合起来,这样我就可以完全退出应用程序 是完整的参考代码 有人能给我推荐这种吗 更新1 我在主要活动中提供退出选项,而不是在其他服务中 我的主要活动是放射性.java,我的服务是RadioPlayerService.java 所以在这里我给退出的主要活动,所以我什么我需要的意思是,而不是退出
再次感谢因此,基本上您可以做的是,当您在对话框上单击“是”时,您应该通过调用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();
}