我们都知道service是没有界面的,默默的在后台执行逻辑代码,有时候需要和前台有所交互,如:toast或弹出提示框等等
在service中弹出toast很简单,只要使用handler就可搞定,代码如下
|
hanlder.post(new Runnable() {
@Override
public void run() {
Toast.makeText(DialogService.this, "启动服务", 1).show();
}
});
|
而在service中弹出dialog时,如果写和activity同样的代码时会报错
因为这个dialog的显示是需要依附于一个activity,如果需要在servcie中显示需要把dialog设置成一个系统的dialog,即全局 性质的提示框,所以只要手机处于开机状态,无论它现在处于何种界面之下,只要调用alter.show(),就会弹出提示框来。需要在show() 调用之前添加以下代码:
|
dialog.getWindow().setType((WindowManager.LayoutParams.TYPE_SYSTEM_ALERT));
|
注意:使用系统的Dialog需要在清单文件中添加权限,否则不会显示出来
android.permission.SYSTEM_ALERT_WINDOW
全部代码
Builder builder = new AlertDialog.Builder(this);
builder.setTitle("提示");
builder.setMessage("该下车了");
builder.setNegativeButton("取消", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
builder.setPositiveButton("确定", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
final AlertDialog dialog = builder.create();
**//在dialog show方法之前添加如下代码,表示该dialog是一个系统的dialog**
dialog.getWindow().setType((WindowManager.LayoutParams.TYPE_SYSTEM_ALERT));
new Thread(){
public void run() {
SystemClock.sleep(4000);
hanlder.post(new Runnable() {
@Override
public void run() {
dialog.show();
}
});
};
}.start();
}
分享到:
相关推荐
场景:在Service 中开启线程下载升级包,当下载完系统升级包,弹出一个Dialog 提示用户。 注意,Android 系统版本不一样,可能会有不一样的表现。当前是基于 Android 8.1.0 的 Service 中弹 Dialog。 首先,就是...
Android Studio Service安卓在服务中如何弹出对话框Dialog
Android开发启动app弹出一张广告图片,Dialog可以查看大图,查看某个图片功能
android service中弹出对话框。
android 全局dialog 兼容android 8.0、内置service模拟来自后台消息推送后自动弹出全局dialog
## service.dialog.jquery-对话框弹出 ###描述 service.dialog.jquery是另一个用于打开对话窗口的 jquery 组件。 我知道有很多这样的对话框插件,所以你可能想知道为什么是这个。 好吧,对我来说,有几件事对于...
从底部弹出的dialog。位置你可以在base里自己改。使用方法都有。public class BaseDialog extends Dialog { private View mContentView; public Context mContext; public LayoutInflater mInflater; public ...
有时候我们需要在App中弹dialog,但是却不知道依附的是哪个Activity,这个时候通常会启动一个service来依附,显示一个全局的dialog。 Android 6.0出现的悬浮窗权限 为什么从6.0说起? 在Android6.0之后,使用悬浮窗...
一、手机版本问题,大多数文章没有涉及这个点,导致他们的代码并无法正常使用 M版本以上需要使用的Type–> TYPE_APPLICATION_OVERLAY AlertDialog.Builder builder=...Dialog dialog=builder.create(); if (Build.VERS
// 初始化警告弹出框 alertDialog = new EmpAlertView(context, Utils.getIdByName(context, style, alert_style)); alertDialog.setCanceledOnTouchOutside(false); LayoutInflater inflater = (LayoutInflater) ...
Android 开发当中,可能会存在许多自定义布局的需求,比如自定义弹出菜单(popupWindow),以及自定义对话框(Dialog)。 话不多说,直接上图片。 先讲第一种,自定义PopUpWindow 1.popupWindow protected ...
会弹出dialog 引导用户选择。 PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (!pm.isIgnoringBatteryOptimizations...
针对AWR13的license不能用的修改解决方案
包括Android布局,弹窗,配色,单击事件,UI,精美炫酷的activity切换动画和空间动画,是新手必备的源码,内含相关的Dome 25件。 - - 文件夹 PATH 列表 卷序列号为 4E8D-6931 C:. │ .txt │ Android-UI-新手必备...
用于弹出ModalDialog进行数据选择的控件 使用.ashx文件处理IHttpHandler实现发送文本及二进制数据的方法 制作一个简单的多页Tab功能 一完美的关于请求的目录不存在而需要url重写的解决方案! 在C#中实现MSN消息框的...
百度首页 | 百度空间 | 登录 广告停放提高网站流量,centos学习 主页博客相册|个人档案 查看文章 .htaccess怎么用2007-05-16 14:04(文章来源)...