我想我已经将自己编码在这里的一个角落了。但我会尽我所能解释我的问题。基本上我正在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,因为我必须重新启动设备重新加载在警报。 –