Android在uithread上运行-我想在5秒内打开对话框,有人能帮我解决这个问题吗 TimerTask TimerTask=new TimerTask(){ @凌驾 公开募捐{ HashMap map=MainActivity.restime; 最终列表ls=UStats.printCurrentUsageStatuspop(ServiceTest.this,“每日”); AlertDialog.Builder alertDialogBuilder=新建AlertDialog.Builder( 服务测试; //定名 alertDialogBuilder.setTitle(“您的标题”); //设置对话框消息 alertDialogBuilder .setMessage(“单击是退出!”) .setCancelable(错误) .setPositiveButton(“是”,新的DialogInterface.OnClickListener(){ public void onClick(DialogInterface对话框,int-id){ //如果单击此按钮,请关闭 //当前活动 dialog.cancel(); } }) .setNegativeButton(“否”,新的DialogInterface.OnClickListener(){ public void onClick(DialogInterface对话框,int-id){ //如果单击此按钮,只需关闭 //打开对话框,不执行任何操作 dialog.cancel(); } }); //创建警报对话框 AlertDialog AlertDialog=alertDialogBuilder.create(); //表现出来 alertDialog.show(); } };

Android在uithread上运行-我想在5秒内打开对话框,有人能帮我解决这个问题吗 TimerTask TimerTask=new TimerTask(){ @凌驾 公开募捐{ HashMap map=MainActivity.restime; 最终列表ls=UStats.printCurrentUsageStatuspop(ServiceTest.this,“每日”); AlertDialog.Builder alertDialogBuilder=新建AlertDialog.Builder( 服务测试; //定名 alertDialogBuilder.setTitle(“您的标题”); //设置对话框消息 alertDialogBuilder .setMessage(“单击是退出!”) .setCancelable(错误) .setPositiveButton(“是”,新的DialogInterface.OnClickListener(){ public void onClick(DialogInterface对话框,int-id){ //如果单击此按钮,请关闭 //当前活动 dialog.cancel(); } }) .setNegativeButton(“否”,新的DialogInterface.OnClickListener(){ public void onClick(DialogInterface对话框,int-id){ //如果单击此按钮,只需关闭 //打开对话框,不执行任何操作 dialog.cancel(); } }); //创建警报对话框 AlertDialog AlertDialog=alertDialogBuilder.create(); //表现出来 alertDialog.show(); } };,android,Android,抛出错误: TimerTask timerTask = new TimerTask() { @Override public void run() { HashMap<String, Integer> map = MainActivity.restime; final List<String> ls = UStats.printCurrentUsageStatuspop(ServiceTest.this, "Daily"

抛出错误:

TimerTask timerTask = new TimerTask() {

    @Override
    public void run() {

        HashMap<String, Integer> map = MainActivity.restime;
        final List<String> ls = UStats.printCurrentUsageStatuspop(ServiceTest.this, "Daily");

        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
                ServiceTest.this);

        // set title
        alertDialogBuilder.setTitle("Your Title");

        // set dialog message
        alertDialogBuilder
                .setMessage("Click yes to exit!")
                .setCancelable(false)
                .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {
                        // if this button is clicked, close
                        // current activity
                        dialog.cancel();
                    }
                })
                .setNegativeButton("No", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {
                        // if this button is clicked, just close
                        // the dialog box and do nothing
                        dialog.cancel();
                    }
                });

        // create alert dialog
        AlertDialog alertDialog = alertDialogBuilder.create();

        // show it
        alertDialog.show();
    }



};
java.lang.RuntimeException:无法在未调用Looper.prepare()的线程内创建处理程序
android.os.Handler.(Handler.java:200)
位于android.os.Handler.(Handler.java:114)
在android.app.Dialog.(Dialog.java:119)
在android.app.Dialog.(Dialog.java:168)
位于android.support.v7.app.AppCompatDialog.(AppCompatDialog.java:43)
位于android.support.v7.app.AlertDialog.(AlertDialog.java:95)
位于android.support.v7.app.AlertDialog$Builder.create(AlertDialog.java:927)
位于com.example.admin.digitaltime.ServiceTest$1.run(ServiceTest.java:100)
在java.util.Timer$TimerImpl.run(Timer.java:284)

你知道这些方法吗 1.post(可运行可运行) 2.postDelayed(可运行、可运行、长延迟时间)

它们都是视图类的方法,所以您可以在任何视图上调用它们,如按钮、文本视图等


我不太清楚您的问题,但我认为您可能需要第二种方法来获得UI线程的延迟。

欢迎使用。在发布之前,这就是你应该如何格式化你的问题:你的代码部分,stacktrace应该在代码块中,这样的代码块应该是可读的,没有不必要的垃圾,比如注释代码部分。你的问题是重复的。看一看
java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
   at android.os.Handler.<init>(Handler.java:200)
   at android.os.Handler.<init>(Handler.java:114)
   at android.app.Dialog.<init>(Dialog.java:119)
   at android.app.Dialog.<init>(Dialog.java:168)
   at android.support.v7.app.AppCompatDialog.<init>(AppCompatDialog.java:43)
   at android.support.v7.app.AlertDialog.<init>(AlertDialog.java:95)
   at android.support.v7.app.AlertDialog$Builder.create(AlertDialog.java:927)
   at com.example.admin.digitaltime.ServiceTest$1.run(ServiceTest.java:100)
   at java.util.Timer$TimerImpl.run(Timer.java:284)