我在应用程序中加载了设备上的一些敏感数据。它可以在应用程序的会话/多次使用之间重复使用,并在不使用/打开/活动时清除。
因此应用程序未处于活动/正在运行状态。有通知显示敏感信息仍在内存中。
但我希望在一段时间后让用户选择清除此数据。
所以我的问题是如何在一定时间后运行一些代码?
答案 0 :(得分:1)
您可以使用AlarmManager计划警报并从BroadcastReceiver / Service运行您的代码。警报将触发您的应用程序已停止或活着的天气。 (如果已经死了就会被唤醒)
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
Intent intent = new Intent(getApplicationContext(), AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, intent, 0);
您可以使用此方法注册一次性警报。因此,如果您希望警报在5分钟内触发,delayMillis
值应为5 * 1000 * 60
void registerOneTimeAlarm(PendingIntent pendingIntent, long delayMillis) {
int SDK_INT = Build.VERSION.SDK_INT;
long timeInMillis = System.currentTimeMillis() + delayMillis;
if (SDK_INT < Build.VERSION_CODES.KITKAT) {
alarmManager.set(AlarmManager.RTC_WAKEUP, timeInMillis, pendingIntent);
} else if (SDK_INT < Build.VERSION_CODES.M) {
alarmManager.setExact(AlarmManager.RTC_WAKEUP, timeInMillis, pendingIntent);
} else {
alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, timeInMillis, pendingIntent);
}
}
假设您将使用接收器,它将如下所示:
public class AlarmReceiver
extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// Your code here
}
}
不要忘记在Manifest中添加它:
<receiver android:name="your.package.AlarmReceiver"/>
重要强> 设备重启时,已注册的告警被清除,需要在设备启动后重新注册告警。 (如果这是你真正需要的)
答案 1 :(得分:-1)
你可以试试这个
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
//Actions to be performed
}
}, TIME_OF_DELAY);