我正在尝试在 Android Studios 中使用 AlarmManager 创建每日倒计时
I'm trying to create a daily countdown using AlarmManager in Android Studios
我正在尝试制作一些东西,即使应用程序已关闭且未处于活动状态,设定的数字每天都会减少。例如,如果您 5 天没有打开该应用程序,当您打开它时,该数字将减少 5 个数字。我一直在尝试使用 AlarmManager,但我只能让它做一个 Toast 而不是 运行 主 activity 中的一个函数。这是我的代码...
主要Activity
private TextView mTest;
private Button mButton;
private int number = 100;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mButton = (Button) findViewById(R.id.button);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
scheduleAlarm();
}
});
}
public void scheduleAlarm(){
Intent intentAlarm = new Intent(this, AlarmReceiver.class);
AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, 100000, 100000, PendingIntent.getBroadcast(this, 1, intentAlarm, PendingIntent.FLAG_UPDATE_CURRENT ));
Toast.makeText(MainActivity.this, "This is starting!", Toast.LENGTH_SHORT).show();
}
public void subtract(){
mTest = (TextView) findViewById(R.id.textView);
number -= 1;
String numberString = Integer.toString(number);
mTest.setText(numberString);
}
这是广播
private MainActivity mMainActivity = new MainActivity();
@Override
public void onReceive(Context context, Intent intent) {
mMainActivity.subtract();
Toast.makeText(context, "This is bogus", Toast.LENGTH_LONG).show();
}
您可以使用计时器轻松完成此操作(https://developer.android.com/reference/java/util/Timer.html)
按照这个例子:
long MINUTE_TO_MSEC = 60000;
long DAY_TO_MSEC = MINUTE_TO_MSEC * 60 * 24;
Timer timer = new Timer();
TimerTask countdownTask = new TimerTask() {
public void run() {
/* your function goes here */
}
}
timer.scheduleAtFixedRate(task,0,DAY_TO_MSEC);
这将每 24 小时 运行 您的代码。
我正在尝试制作一些东西,即使应用程序已关闭且未处于活动状态,设定的数字每天都会减少。例如,如果您 5 天没有打开该应用程序,当您打开它时,该数字将减少 5 个数字。我一直在尝试使用 AlarmManager,但我只能让它做一个 Toast 而不是 运行 主 activity 中的一个函数。这是我的代码...
主要Activity
private TextView mTest;
private Button mButton;
private int number = 100;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mButton = (Button) findViewById(R.id.button);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
scheduleAlarm();
}
});
}
public void scheduleAlarm(){
Intent intentAlarm = new Intent(this, AlarmReceiver.class);
AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, 100000, 100000, PendingIntent.getBroadcast(this, 1, intentAlarm, PendingIntent.FLAG_UPDATE_CURRENT ));
Toast.makeText(MainActivity.this, "This is starting!", Toast.LENGTH_SHORT).show();
}
public void subtract(){
mTest = (TextView) findViewById(R.id.textView);
number -= 1;
String numberString = Integer.toString(number);
mTest.setText(numberString);
}
这是广播
private MainActivity mMainActivity = new MainActivity();
@Override
public void onReceive(Context context, Intent intent) {
mMainActivity.subtract();
Toast.makeText(context, "This is bogus", Toast.LENGTH_LONG).show();
}
您可以使用计时器轻松完成此操作(https://developer.android.com/reference/java/util/Timer.html)
按照这个例子:
long MINUTE_TO_MSEC = 60000;
long DAY_TO_MSEC = MINUTE_TO_MSEC * 60 * 24;
Timer timer = new Timer();
TimerTask countdownTask = new TimerTask() {
public void run() {
/* your function goes here */
}
}
timer.scheduleAtFixedRate(task,0,DAY_TO_MSEC);
这将每 24 小时 运行 您的代码。