为了学习如何使用 AlarmManager,我创建了一个由单个按钮组成的活动。当按下按钮时,活动会创建一个自身的 Intent 并在完成前 3 秒将其加载到 AlarmManager 中。
因此活动打开,用户按下按钮,活动关闭,3 秒后活动打开,重复。
问题是 3 秒后我没有打开活动,而是收到错误消息:“应用程序 [myappname] 已意外停止。请重试。” 除非我改用 Toast 来代替,否则它是有效的。
这是按钮的代码:
thanksButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
setResult(RESULT_OK);
Intent intent = new Intent(myappname.this,
myappnameBroadcastReceiver.class);
PendingIntent appIntent = PendingIntent.getBroadcast
(myappname.this, 0, intent, 0);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.SECOND, 3);
AlarmManager am = (AlarmManager)getSystemService
(ALARM_SERVICE);
am.set(AlarmManager.RTC, calendar.getTimeInMillis(),
appIntent);
finish();
}
});
这是广播接收器:
package com.myappname;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class myappnameBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
context.startActivity(new Intent(context, myappname.class));
}
}
这是 manifest.xml 中的内容
<receiver
android:name=".myappnameBroadcastReceiver"
android:process=":remote">
</receiver>