我想我已經將自己編碼在這裏的一個角落了。但我會盡我所能解釋我的問題。基本上我正在android上構建一個應用程序,該應用程序應該是手機上的鬧鐘應用程序的副本。我有一個代表警報的對象。它包括時間和布爾等天。我堅持這些對象的序列化和保存到一個文件。然後,在啓動時,我有一個啓動啓動服務的broadcastreciever。基本上bootservice有一個遍歷我的警報列表的循環。 iam試圖在每個報警對象上調用一個名爲「setSysAlarm()」的方法,該方法應該在保存的時間重新創建每個android系統報警。目前,「setSystemAlarm」方法只是爲了測試目的而創建一個敬酒。但是這導致應用程序崩潰。我的設計中顯然存在缺陷,我認爲嘗試使用應用上下文會導致崩潰。我的想法是,我應該在運行時通過GUI通過服務創建所有警報,並在啓動時重新創建警報?因此無論應用程序運行的時間是否可以完成警報創建,還可以在一個地方創建警報?以下是我在啓動時執行的啓動服務代碼。設備關機後恢復報警
public class BootService extends Service {
private Thread setallarams;
private file_acces_int fileaccess;
private ArrayList<alarm_entity> alarmlst;
private Runnable setalarmsrunnable = new Runnable() {
@Override
public void run()
{
for(alarm_entity alarm : alarmlst)
{
alarm.setSystemAlarm();
}
}
};
@Override
public void onCreate()
{
fileaccess = new file_access_model(getApplicationContext());
alarmlst = fileaccess.readFromFile();
setallarams = new Thread(setalarmsrunnable);
cont = this;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
setallarams.start();
try {
setallarams.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
stopSelf();
return START_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
這裏是我的alarm_entity類的setSystemAlarm()方法。基本上這意味着在開機時創建敬酒,但目前應用程序正在崩潰
public void setSystemAlarm()
{
Toast.makeText(cont, "hi there", Toast.LENGTH_SHORT);
}
如果有人可以幫我在這裏感謝它。我用來獲取上下文的方法是 1.從bootService傳入它。似乎不適合我? 2.在每個alarm_entity的構造函數中創建Application的實例並將其用作上下文。這對我來說也很愚蠢。大聲笑
無論如何感謝提前和抱歉的冗長的問題!
請提供logcat輸出,我們需要查看崩潰的原因。 – Opiatefuchs
僅供參考,即使應用沒有崩潰,您的Toast也不會出現,因爲您忘記了.show().. – Opiatefuchs
哦,該死的。無論如何,我不能得到在logcat,因爲我必須重新啓動設備重新加載在警報。 –