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以及通知栏不显示的问题