AlarmManager在仿真器工作良好,但在实际设备(AlarmManager working w

2019-08-17 07:21发布

这是我设置报警代码:

public void SetAlarm(Context context, int tag, long time){
     AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
     Intent i = new Intent(context, Alarm.class);
     i.putExtra("position", tag);
     PendingIntent pi = PendingIntent.getBroadcast(context, tag, i, PendingIntent.FLAG_CANCEL_CURRENT);
     am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+ time, pi); // Millisec * Second * Minute
}

这是我的onRecieve梅索德:

public void onReceive(final Context context, Intent intent){   
    PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
    PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "my wak up lo");
    wl.acquire();

    position = intent.getIntExtra("position", -1);         
    new PostManager(context, position);

    wl.release();
}

这是用模拟器运作良好。 同时我设置一个报警在仿真器和实际设备24小时,之后将触发。 这项工作是由仿真器做得很好,但不是在真实的设备。 出现这种情况的PowerManager.FULL_WAKE_LOCK或别的什么吗? 我已经很努力,但未能找到任何解决方案。

Answer 1:

对不起你们,这个问题是PostManager 。 在PostManager ,我被检查可以用一个字符串会话cookie。 那么什么情况? 这里是answwer。 4小时之前的会话cookie留在cookiemanager因此通过检查.equal(another_string)做工精细。 但我认为,在4小时后会话cookie过期, .equal(another_string)抛出NullPointerException。 所以我刚才检查的cookie我已经得到的,为空或不是。 这个解决我的问题。 再次对不起你们。



文章来源: AlarmManager working well in emulator but not in real device