2012-08-16 20 views
0

我想在5秒後發送通知。無法在未調用looper的線程內創建處理程序?

我發現此代碼示例在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) {} 

} 

回答

0

您需要從始終保持運行的線程調用rem.setNotification。一種方法是使用runonuithread

runonUithread(new Runnable(){ 
    run(){ 
     rem.setNotification("Todo!",false,1); 
    } 
}); 
0

當你執行一些代碼,不應該在另一個線程比UI線程來完成你會得到這個錯誤。如此簡單地獲得一個活動對象並在其上調用runOnUiThread(Runnable action) {}。在Runnable中放置產生錯誤的代碼。

我希望這會有所幫助。

相關問題