当点击通知时,转到MainActivity并恢复任务(Countdown Timer应继续)需要进行以下步骤:
以下是一个示例代码,演示了如何实现上述功能:
// 创建通知
NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.notification_icon)
.setContentTitle("任务通知")
.setContentText("点击通知返回任务")
.setAutoCancel(true);
// 设置通知的点击行为
Intent intent = new Intent(this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
builder.setContentIntent(pendingIntent);
// 发送通知
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0, builder.build());
// 在MainActivity中处理通知点击事件
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 检查是否是从通知启动的
Intent intent = getIntent();
if (intent != null && (intent.getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) == 0) {
// 获取之前保存的任务状态
SharedPreferences sharedPreferences = getSharedPreferences("TaskState", Context.MODE_PRIVATE);
long remainingTime = sharedPreferences.getLong("RemainingTime", 0);
// 根据任务状态进行处理,如恢复倒计时
if (remainingTime > 0) {
// 创建倒计时
CountdownTimer countdownTimer = new CountdownTimer(remainingTime, 1000) {
@Override
public void onTick(long millisUntilFinished) {
// 更新倒计时显示
}
@Override
public void onFinish() {
// 倒计时结束处理
}
};
// 启动倒计时
countdownTimer.start();
}
}
}
// 在MainActivity中保存任务状态
@Override
protected void onPause() {
super.onPause();
// 保存任务状态
SharedPreferences sharedPreferences = getSharedPreferences("TaskState", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putLong("RemainingTime", countdownTimer.getRemainingTime());
editor.apply();
}
在这个示例中,我们使用了NotificationCompat.Builder类创建了一个通知,并设置了通知的标题、内容、图标等属性。然后,我们创建了一个Intent对象,并设置了特定的标志,以便在MainActivity中判断是否是从通知启动的。接下来,我们使用PendingIntent将Intent与通知关联起来,当用户点击通知时,会启动MainActivity,并传递相应的Intent。最后,我们使用NotificationManager发送了通知。
在MainActivity中,我们在onCreate方法中获取了之前保存的任务状态,并根据任务状态进行相应的处理,如恢复倒计时。在onPause方法中,我们保存了任务状态,以便在下次启动时能够恢复任务。
请注意,这只是一个示例代码,实际应用中可能需要根据具体需求进行适当的修改和扩展。另外,为了简化示例,我们没有包含倒计时的具体实现,你需要根据自己的需求来实现倒计时的逻辑。
领取专属 10元无门槛券
手把手带您无忧上云