【发布时间】:2010-01-12 23:27:25
【问题描述】:
为了学习如何使用 AlarmManager,我创建了一个活动 由一个按钮组成。当按下按钮时 活动创建自己的 Intent 并将其加载到 AlarmManager 3 秒后完成。
所以活动打开,用户按下按钮,活动关闭,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>
【问题讨论】: