zoukankan      html  css  js  c++  java
  • 在Service里调用AlertDialog

    用常规的方法在AlertDialog的时候,会报错,大意是「can not add window in this view」。

    原因是Service是没有界面的,只有Activity才能添加界面。

    解决方法是使用系统的dialog,即全局性质的提示框。这个Dialog可能不只局限于Service里可以使用,而是在任何位置都可以悬浮。

    具体可以模仿如下代码:

    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();
    }

    讨厌的一点是要加一个权限:

        <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>

    另外,在Listener的匿名内部类中使用一个non-final的变量'msg'时,它提示了「Cannot refer to a non-final variable msg inside an inner class defined in a different method"。」但是在函数声明过程中加入final(public void handleMessage(final Message msg))好像是不行的,会报错。我加了一个中间语句:

    final File msg1 = (File)msg.obj;

    然后再使用msg1,就可以了。

    解决问题的过程中还遇到了handler,final(《重载、覆写和继承》),以及super之类的知识,要学习handler。

    参考:http://my.eoe.cn/cainiao1/archive/2345.html?f_section=similar

  • 相关阅读:
    Pick-up sticks
    The Doors
    Intersecting Lines
    Segments
    TOYS
    Palindrome
    Distinct Substrings
    Milk Patterns
    Musical Theme
    JavaScript基于时间的动画算法
  • 原文地址:https://www.cnblogs.com/larrylawrence/p/3570975.html
Copyright © 2011-2022 走看看