如何在Android中预设时间后开始活动?

时间:2015-06-29 19:10:45

标签: android android-intent android-broadcast

我一直在尝试在用户设定的预定时间之后开始活动。 我有两个活动,一个是通过以下方式将一些字符串发送到另一个活动:

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将这些字符串发送到第二类。我只能在不传递这些字符串的情况下触发第二个类。 请帮助。

4 个答案:

答案 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的启动画面。

相关问题