我一直在尝试在用户设定的预定时间之后开始活动。 我有两个活动,一个是通过以下方式将一些字符串发送到另一个活动:
Intent go = new Intent(MainActivity.this, CallComeActivity.class);
go.putExtra("sub", name);
go.putExtra("photo_path", fname);
go.putExtra("text", number);
startActivity(go);
我使用以下方式接收这些字符串:
String sub = intent.getStringExtra("sub");
String photo_path=intent.getStringExtra("photo_path");
String text = intent.getStringExtra("text");
现在我需要在一段时间后开始第二项活动。 我尝试使用BroadCast Receiver,但我无法使用Broadcast Receiver将这些字符串发送到第二类。我只能在不传递这些字符串的情况下触发第二个类。 请帮助。
答案 0 :(得分:2)
您需要的是AlarmManager..,并且您可以使用PendingIntent来添加额外内容
Intent go = new Intent(MainActivity.this, CallComeActivity.class);
go.putExtra("sub", name);
go.putExtra("photo_path", fname);
go.putExtra("text", number);
PendingIntent pIntent = PendingIntent.getActivity(this, 0, go, 0);
来自文档:
此类提供对系统警报服务的访问。这些允许 你安排你的应用程序在运行中的某个时刻运行 未来。当闹钟响起时,已注册的意图 因为它是由系统广播,自动启动目标 应用程序,如果它尚未运行。注册的警报是 在设备处于睡眠状态时保留(并且可以选择唤醒设备) 设备如果在那段时间内关闭,但如果它会被清除 关闭并重新启动。
答案 1 :(得分:0)
您是否正在尝试做这样的事情
Makefile.am
答案 2 :(得分:0)
您可以使用AlarmManager计划警报,并且一旦调用AlarmReceiver的onReceive方法,就可以启动该活动。但它可能看起来很突然,特别是如果用户正在使用其他应用程序。
Intent intent = new Intent(appContext, AlarmReceiver.class);
intent.putExtra(key, value);
PendingIntent alarmIntent = PendingIntent.getBroadcast(appContext,id, intent, 0);
alarmMgr.setExact(AlarmManager.RTC, remindAtTimeStamp, alarmIntent);
答案 3 :(得分:0)
TimerTask task = new TimerTask() {
@Override
public void run() {
Intent go = new Intent(MainActivity.this, CallComeActivity.class);
go.putExtra("sub", name);
go.putExtra("photo_path", fname);
go.putExtra("text", number);
startActivity(go);
}
};
Timer timer = new Timer();
timer.schedule(task, 3000);
尝试使用TimerTask在一段时间后执行某些操作。 我使用它来显示用于树秒的mi app的启动画面。