从不同的JAVA类调用方法

从不同的JAVA类调用方法,java,android,broadcastreceiver,alarmmanager,Java,Android,Broadcastreceiver,Alarmmanager,我有一个名为“createAlarms()”的方法,它在应用程序初始设置时设置特定时间的报警。运行此警报时,它会创建一个通知,我正在使用广播接收器类创建该通知 public void createAlarms() { cal = Calendar.getInstance(); cal.add(Calendar.HOUR, alarmintervalint); calintent = new Intent(this, AlarmBroadcastReceiver.class

我有一个名为“createAlarms()”的方法,它在应用程序初始设置时设置特定时间的报警。运行此警报时,它会创建一个通知,我正在使用广播接收器类创建该通知

public void createAlarms() {
    cal = Calendar.getInstance();
    cal.add(Calendar.HOUR, alarmintervalint);
    calintent = new Intent(this, AlarmBroadcastReceiver.class);
    calpendingintent = PendingIntent.getBroadcast(this.getApplicationContext(), 12345, calintent, 0);
    am = (AlarmManager)getSystemService(Activity.ALARM_SERVICE);
    am.set(AlarmManager.RTC_WAKEUP, alarmintervalint, calpendingintent);
}
我希望此警报在每个“AlarmIntervalent”时间段重复。我可以通过使用“am.setRepeating()”函数来实现这一点,但我的问题比这个要复杂一些。在发送一定数量的报警(例如程序将计算50)后,我希望所有值都更改,以便alarmintervalint将更改

private void showNotification(Context context) {
    PendingIntent notifpi = PendingIntent.getActivity(context, 0, new Intent(context, Main.class), 0);

    NotificationCompat.Builder mBuilder = 
        new NotificationCompat.Builder(context)
        .setSmallIcon(R.drawable.ic_launcher)
        .setContentTitle("Hello!")
        .setContentText("Welcome!")
        .addAction(R.drawable.ic_launcher, "Open App", notifpi);
    mBuilder.setContentIntent(notifpi);
    mBuilder.setDefaults(Notification.DEFAULT_SOUND);
    mBuilder.setAutoCancel(true);
    NotificationManager mNotificationManager =
        (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
    mNotificationManager.notify(1, mBuilder.build());
    System.out.println("6");

}
例如,现在,警报每2小时响一次,我每2小时收到一次通知。收到50个通知后,我想设置闹钟在3小时后响。50次通知后,再做4个小时。(这只是一个例子,它会有点复杂


我该怎么做呢?现在我想的是在我的broadcastreceiver类中有某种计数器,当计数器达到50(在本例中)后,它将调用createAlarms()初始化并更改计时和内容。这样做行吗?

最简单的方法是使用
计时器。在初始设置方法、main方法或其他任何方法中设置
计时器任务

例如:

import java.util.TimerTask;

public class Schedular extends TimerTask {
    @Override
    public void run() {
        //your implementation.
        System.out.println("Run Me ~");
    }
}

import java.util.Timer;
import java.util.TimerTask;

public class Main{
    public static void main(String[] args){

        TimerTask task = new Schedular();
        Timer timer = new Timer();
        //miliseconds
        timer.schedule(task, 1000, 60000);
    }
}

参考资料:

我不完全确定您使用闹钟的目的,但看起来您希望人们逐渐减少吸烟频率。

在这种情况下,我想在前面的回答中补充一点,即您可能希望保留上次使用的时间间隔,以防应用程序崩溃或手机重新启动。您可以使用。

轻松存档。您自己已经给出了解决方案。是的,设置计数器并在特定时间间隔重置警报将起作用。您还可以使用一些IsetAlarm()本身中的nCremential集合,它应该在50之后增加间隔。是的,但是由于它位于不同的类中,我如何调用该方法?这是最有效的方法吗?将该方法设为静态,您将能够使用classname调用。