gpt4 book ai didi

android - 如何在服务类的定时器内显示AlertDialog?

转载 作者:太空宇宙 更新时间:2023-11-03 10:55:38 25 4
gpt4 key购买 nike

我想在 Service 类的 Timer 中显示 AlertDialog,我正在使用以下代码:

timer.scheduleAtFixedRate( new TimerTask() 
{
private Handler updateUI = new Handler()
{
public void dispatchMessage(android.os.Message msg)
{
super.dispatchMessage(msg);
try {
fun();
} catch (Exception e) {e.printStackTrace(); }
}
};
public void run()
{
try {
updateUI.sendEmptyMessage(0);
}catch (Exception e) {e.printStackTrace(); }
}
}, 0,60000);

public void fun()
{
AlertDialog.Builder dlgAlert = new AlertDialog.Builder(this);
dlgAlert.setMessage("");
dlgAlert.setTitle("");
dlgAlert.setPositiveButton("OK", null);
dlgAlert.setCancelable(true);
dlgAlert.create();
dlgAlert.show();
}

我收到以下错误:

03-14 13:14:36.879: WARN/WindowManager(60): Attempted to add window with non-application token WindowToken{43f606b0 token=null}.  Aborting.
03-14 13:14:36.879: WARN/System.err(817): android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
03-14 13:14:36.889: WARN/System.err(817): at android.view.ViewRoot.setView(ViewRoot.java:509)
03-14 13:14:36.889: WARN/System.err(817): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
03-14 13:14:36.889: WARN/System.err(817): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
03-14 13:14:36.899: WARN/System.err(817): at android.app.Dialog.show(Dialog.java:241)
03-14 13:14:36.899: WARN/System.err(817): at android.app.AlertDialog$Builder.show(AlertDialog.java:802)
03-14 13:14:36.899: WARN/System.err(817): at com.mobilelocalite.pkg.GPSServiceCellId.comparefromDb(GPSServiceCellId.java:373)
03-14 13:14:36.909: WARN/System.err(817): at com.mobilelocalite.pkg.GPSServiceCellId$1$1.dispatchMessage(GPSServiceCellId.java:133)
03-14 13:14:36.909: WARN/System.err(817): at android.os.Looper.loop(Looper.java:123)
03-14 13:14:36.909: WARN/System.err(817): at android.app.ActivityThread.main(ActivityThread.java:4627)
03-14 13:14:36.909: WARN/System.err(817): at java.lang.reflect.Method.invokeNative(Native Method)
03-14 13:14:36.909: WARN/System.err(817): at java.lang.reflect.Method.invoke(Method.java:521)
03-14 13:14:36.909: WARN/System.err(817): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
03-14 13:14:36.920: WARN/System.err(817): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
03-14 13:14:36.920: WARN/System.err(817): at dalvik.system.NativeStart.main(Native Method)

提前致谢。

最佳答案

看看这个问题:Alert dialog from Android service

编辑:

问题是您试图在没有任何窗口引用的情况下弹出一个对话框。您需要将消息发送到 Activity,并让 Activity 处理弹出的对话框。

使用

new AlertDialog.Builder(this);

在服务内部会给你一个类似于你得到的错误。在 Activity 中使用相同的代码不会。

因此,一种替代方法是向您正在联系的 Activity 发送广播,让 Activity 监听此广播。当 Activity 接收到广播时,会显示一个对话框。

关于android - 如何在服务类的定时器内显示AlertDialog?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5295983/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com