android中service显示dialog

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android中service显示dialog相关的知识,希望对你有一定的参考价值。

android中,如何实现一个没有UI的service弹出一个对话框,就是说比如你现在正在上网看网页,然后后台正在运行的service弹出一个对话框,显示在当前的网页页面之上,多谢了!

两种方法
1 service发送广播intent消息,其他的activity注册receiver。收到消息显示toast
2 service发送一个intent到一个activity,该activity启动并显示提示。
这个activity,最好不是全屏的,而且不要存在历史记录中。只起到提示的作用。
参考技术A 我也碰到了这个问题,感觉好像没有办法解决。因为弹出对话框必须要当前的Context,而且创建对话框必须在主线程里面。所以如果是service想弹出东西的话,估计只能用Toast吧?或者让service intent到一个Activity,然后让这个Activity只负责弹出对话框的工作,如果关闭这个对话框,就直接finish()掉这个Activity.我想这种方法应该可以吧。如果有高手有更好的解决方法就好了~~ 参考技术B 让这个控制台进程支持MFC. 参考技术C 网页?????

android Service中启动Dialog

        在Service 中弹出Dialog与在Activity中弹出Dialog的方式一样,可是activity finish后,dialog也会随着关闭。他是依附着activity的。在Service中就不一样了,Service没有界面,言弹出Dialog。他依附什么呢?

        首先,看看在Service中怎样弹出对话框:

dialog = new AlertDialog.Builder(ctx).create();
			dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); 
			dialog.show();
			Window window = dialog.getWindow();
			window.setContentView(R.layout.exit_dialog);
			Button ok = (Button) window.findViewById(R.id.sure);
			((TextView)window.findViewById(R.id.prompt_context)).setText(msg);
			ok.setOnClickListener(new View.OnClickListener() {
				public void onClick(View v) {
					
					//销毁全部Activity
					
					stopSelf();
					
					ExitApplication.getInstance().exit();
				}
			});
	
			Button cancel = (Button) window.findViewById(R.id.cancel);
			cancel.setOnClickListener(new View.OnClickListener() {
				public void onClick(View v) {
					dialog.cancel();
				}
			});
			
			dialog.setCancelable(false);

在上面有这样一句话:

dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
这是设置dialog属于全局的。系统的对话框,在不论什么界面都会弹出来。

可是,当我自身app退出时。服务继续执行,又不希望dialog弹出来,怎么实现呢?


有待研究啊!



以上是关于android中service显示dialog的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 audio_service 在 Android 上显示当前正在播放的音频?

导入 google-play-service 库,在此参考 android 旁边显示一个红色 X

android Service在8.0以及通知栏不显示的问题

android Service在8.0以及通知栏不显示的问题

关于android编程中service和activity的区别

Android服务Service使用总结