Android 为什么AlarmMAnager不工作?
我正在从BroadcastReceiver调用服务类。我的类为:-Android 为什么AlarmMAnager不工作?,android,Android,我正在从BroadcastReceiver调用服务类。我的类为:- InsertIntoDB objinsert; ArrayList<ContactClass> resultList; ContactClass mContactClass =null; public ScheduleService() { super("B'Day Checker Service"); } @Override protected void onHandleIntent(Inten
InsertIntoDB objinsert;
ArrayList<ContactClass> resultList;
ContactClass mContactClass =null;
public ScheduleService() {
super("B'Day Checker Service");
}
@Override
protected void onHandleIntent(Intent intent)
{
objinsert = new InsertIntoDB(this);
Log.d("MyService", "About to execute MyTask");
new MyTask().execute();
}
private class MyTask extends AsyncTask<Void, Void, ArrayList<ContactClass>>
{
@Override
protected void onPreExecute() {
super.onPreExecute();
mContactClass = new ContactClass();
resultList= new ArrayList<ContactClass>();
}
@Override
protected ArrayList<ContactClass> doInBackground(Void... arg0)
{
List<ContactClass> contacts = objinsert.getAllContacts();
for (ContactClass cn : contacts)
{
String mdob = cn.getDob();
long output = dateCompare(mdob);
if(output==0)
{
mContactClass.setId(cn.getId());
mContactClass.setName(cn.getName());
mContactClass.setDob(cn.getDob());
resultList.add(mContactClass);
}
Log.d("Name: ",""+resultList.size());
}
return resultList;
}
@Override
protected void onPostExecute(ArrayList<ContactClass> result) {
super.onPostExecute(result);
System.out.println("posttttt");
int length=0;
if(result!=null)
{
length = result.size();
}
if(length!=0)
{
for(int mindex =0;mindex<length;mindex++)
{
String date = result.get(mindex).getDob();
String[] arrdob =date.split("/");
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(System.currentTimeMillis());
cal.clear();
cal.set(Integer.parseInt(arrdob[2]), Integer.parseInt(arrdob[1])-1,Integer.parseInt(arrdob[0]),14,17);
AlarmManager alarmMgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(ScheduleService.this, BirthDayReciever.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(ScheduleService.this, 0, intent, 0);
//cal.add(Calendar.SECOND, 5);
alarmMgr.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent);
}
}
}
}
public long dateCompare(String date)
{
System.out.println("date---"+date);
String geivendate[] = date.split("/");
int Day= Integer.parseInt(geivendate[0]);
int Month= Integer.parseInt(geivendate[1]);
int Year= Integer.parseInt(geivendate[2]);
Date currentdate = new Date();
Calendar calUpdated = Calendar.getInstance();
calUpdated.set(Year, Month-1, Day);
long updateDateMilliSec = calUpdated.getTimeInMillis();
long diff = currentdate.getTime() - calUpdated.getTimeInMillis();
long diffDays = (diff / (1000 * 60 * 60 * 24));
return diffDays;
}
任何人都可以告诉我哪里错了,特别感谢….我建议你用一种简单的方法设置报警管理器 为此,您不需要异步任务。 下面的错误表示线程已经死了,一些东西试图在死线程中向处理程序发送消息
07-11 14:16:34.444: W/MessageQueue(942): Handler{44f6ad40} sending message to a Handler on a dead thread
07-11 14:16:34.444: W/MessageQueue(942): java.lang.RuntimeException: Handler{44f6ad40} sending message to a Handler on a dead thread
下面的链接可以给你一些关于这个问题的提示
您是否尝试过在异步任务中从其他位置执行此操作,但问题是什么,为什么它不起作用?您正在执行某些操作,试图访问死线。我可以使用简单方法而不是异步任务吗?谢谢,我正在尝试,但brodcast未在设定时间执行。
07-11 14:16:34.444: W/MessageQueue(942): Handler{44f6ad40} sending message to a Handler on a dead thread
07-11 14:16:34.444: W/MessageQueue(942): java.lang.RuntimeException: Handler{44f6ad40} sending message to a Handler on a dead thread