如何使用广播接收器在特定时间进行活动?

时间:2012-08-10 18:31:06

标签: android android-activity broadcastreceiver

当我设定时间时,如何使用广播接收器在该特定时间开始活动或执行某些操作,例如按钮点击操作(不是吐司)?

2 个答案:

答案 0 :(得分:0)

您可能需要处理程序;

Intent intent;
Handler handler;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    intent = new Intent(this, ChildActivity.class);
    handler = new Handler();

    setContentView(R.layout.activity_streaming_client_example);


}

并使其在特定时间运行使用handler.postAtTime

handler.postAtTime(new Runnable() {
@Override
public void run() {
        MotherActivity.this.startActivityForResult(intent, 0);
    }
}, millisecond_toStartfromUpTime);

如果您想在几秒钟后发布,请使用handler.postDelayed

handler.postDelayed(new Runnable() {
@Override
public void run() {
        MotherActivity.this.startActivityForResult(intent, 0);
    }
}, millisecond_delayhere);

答案 1 :(得分:0)

您可能需要使用AlarmManager + Service来执行此操作。 你可以在这里看看

http://android-er.blogspot.com/2010/10/simple-example-of-alarm-service-using.html

和显示Toast的Service类(在链接中), 只需在那里制作一些新意图和startActivity(intent) PS。在开始之前。您必须添加此行

非常重要
youintent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
像这样

public class AlarmService extends Service {

private Intent alarmIntent;

@Override
public void onCreate() {
    alarmIntent = new Intent(this, AlarmActivity.class);
    alarmIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
}

@Override
public void onStart(Intent intent, int startId) {
    super.onStart(intent, startId);

    //Toast.makeText(this, "MyAlarmService.onStart()", Toast.LENGTH_LONG)
    //      .show();

    startActivity(alarmIntent);
}

// another implement method......
}