0

我想在 5 秒后发送通知。

我发现这个代码示例在5 秒后做某事,但我只能设置一个Log.e().
Notification方法也有效。但是如果我想调用该方法setNotification(),我会RuntimeError5 秒后得到:

无法在未调用 looper.prepare() 的线程内创建处理程序。

我找到了很多帮助,但没有任何效果。所以我希望你能帮助我。

public class Reminder {
    Timer timer;

    public Reminder(int seconds) {
        timer = new Timer();
        timer.schedule(new RemindTask(), seconds * 1000);
    }
}

class RemindTask extends TimerTask {
    public void run() { 
        todo_list rem = new todo_list();
        rem.setNotification("Todo!", false, 1);
    }
}

public class todo_list extends ListActivity {
    public void onCreate(Bundle savedInstanceState) {
        new Reminder(5);
    }

    public void setNotification(String text, boolean ongoing, int id) {}

}
4

2 回答 2

0

您需要从将始终运行的线程中调用 rem.setNotification。一种方法是使用runonuithread

runonUithread(new Runnable(){
    run(){
        rem.setNotification("Todo!",false,1);
    }
});
于 2012-08-18T06:42:03.547 回答
0

当您执行一些不应在 UI 线程以外的线程中完成的代码时,您将收到此错误。如此简单地获取一个活动对象并调用runOnUiThread(Runnable action) {}它。将生成错误的代码放在Runnable.

我希望这有帮助。

于 2012-08-18T08:15:13.940 回答