Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Alarmmanager无法使用大秒数工作_Java_Android_Alarmmanager - Fatal编程技术网

Java Alarmmanager无法使用大秒数工作

Java Alarmmanager无法使用大秒数工作,java,android,alarmmanager,Java,Android,Alarmmanager,我用alarm manager制作了一个简单的警报,问题是当插入许多秒时,它不能及时工作,我在这里声明了这一点 这是密码 mo = ((Integer.parseInt(mons.getText().toString())) * (30 * 24 * 60 * 60)); we = ((Integer.parseInt(weeks.getText().toString())) * (7 * 24 * 60 * 60)); da = ((Integer.par

我用alarm manager制作了一个简单的警报,问题是当插入许多秒时,它不能及时工作,我在这里声明了这一点

这是密码

 mo = ((Integer.parseInt(mons.getText().toString())) * (30 * 24 * 60 * 60));
         we = ((Integer.parseInt(weeks.getText().toString())) * (7 * 24 * 60 * 60));
         da = ((Integer.parseInt(days.getText().toString())) * (24 * 60 * 60));
         ho = ((Integer.parseInt(hours.getText().toString())) * (60 * 60));
         mi = ((Integer.parseInt(mins.getText().toString())) * (60));

         int all = mo+we+da+ho+mi;



       Intent i = new Intent(Messages.this, Alarm.class);
       PendingIntent pd = PendingIntent.getBroadcast(getApplicationContext(), 5484, i, 0);
       AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
       am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + (all*1000), pd);
这是接收机

@Override
public void onReceive(Context context, Intent intent) {
    Toast.makeText(context,"ALarm....",Toast.LENGTH_LONG).show();
    showNotification( context);
}
private void showNotification(Context context) {
    NotificationCompat.Builder mBuilder =
            new NotificationCompat.Builder(context,"M_CH_ID")
                .setSmallIcon(android.R.drawable.ic_dialog_alert)
                .setContentTitle("فكرنى")
                .setContentText("I think you need to do something")
                .setAutoCancel(true);
    mBuilder.setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE);      
    NotificationManagerCompat mNotificationManager =
    NotificationManagerCompat.from(context);
    mNotificationManager.notify(1, mBuilder.build());
}

如果它在828秒±2秒左右出错,我懒得做MWE,那么在计算mo时会有一个简单的整数溢出,cf

使用long或根据某些日期对象进行其他计算


编辑:我需要更多的咖啡,当然你不会在828秒左右拿到,因为秒不会传递到月评估。不过,我仍然押注于一个整数ovewflow,只是不完全是这个值和变量。

它做错了什么?您是否收到错误消息?没有任何消息,它运行但报警未及时工作@StultuskeI有义务警告您,长时间运行后,您最终仍会出现溢出,仅针对更大的数字,即仅使用长时间并不是一个防弹解决方案。如果你觉得可以,请接受我的回答,这样其他so用户就会认为你的问题已经得到了回答。@AhmedElBagory不,你还没有接受,只是投了更高的票;点击答案旁边的复选标记,参见@D.Kovács long即可;OP不会得到长时间的溢出-除非他将警报安排在3000亿年后。@JimmyB你当然是对的,如果我看得对的话,最早的溢出将是mi在**63-1%2F1000%2F60+秒,这几乎正好是3000亿年,太好了!