zoukankan      html  css  js  c++  java
  • android service 如何弹出dialog

    在service中弹出toast,需要使用handler,

    1 handler.post(new Runnable() {
    2      @Override
    3      public void run() {
    4           Toast.makeText(this, "重启服务", 1).show();
    5      }  
    6 });

    在service中弹出dialog,写着跟activity同样代码会报错。

    因为这个dialog显示时是需要依赖一个activity,如何需要在service中显示需要把dialog设置成一个系统的dialog,即全局性质的提示框。

    1 dialog.getWindow().setType((WindowManager.LayoutParams,TYPE_SYSTEM_ALERT));
    //在dialog show 方法之前添加这个代码,表示该dialog是系统的dialog。

    注意:

    使用系统dialog,需要在清单文件中添加权限:

    1 android.permission.SYSTEM_ALERT_WINDOW

    e.g. 

     1 Builder builder = new AlertDialog.Builder(this);
     2 builder.setMessage("是否重启服务");
     3 builder.setNegativeButton("取消", new OnClickListense() {
     4     @Override
     5     public void onClick(DialogInterface dialog, int which) {
     6            // to do
     7     }
     8 });
     9 builder.setPositiveButton("确定", new OnClickListense() {
    10     @Override
    11     public void onClick(DialogInterface dialog, int which) {
    12            // to do
    13     }
    14 });
    15 final AlertDialog dialog = buidler.create();
    16 //在dialog show前添加此代码,表示该dialog属于系统dialog。
    17 dialog.getWindow().setType((WindowManager.LayoutParams.TYPE_SYSTEM_ALERT));
    18 new Thread() {
    19      public void run() {
    20             SystemClock.sleep(2000);
    21             hanlder.post(new Runnable() {
    22                     @Override
    23                     public void run() {
    24                           dialog.show();
    25                     }
    26             });
    27      };
    28 }.start();
  • 相关阅读:
    Flume(二)Flume的Source类型
    Hadoop(四)HDFS的高级API操作
    Flume(一)Flume的基础介绍与安装
    MySQL 的索引优化
    CentOS7.5安装Mysql5.7.22
    Hadoop(三)HDFS读写原理与shell命令
    iOS NSDictionary JSON 相互转换
    iOS UICollectionView 在滚动时停在某个item位置上
    vim的基本使用方法
    初次使用git上传代码到github远程仓库
  • 原文地址:https://www.cnblogs.com/CharlesGrant/p/4757839.html
Copyright © 2011-2022 走看看