AlarmManager和失败的PendingIntent
问题描述:
为了学习如何使用AlarmManager,我创建了一个由单个按钮组成的活动 。当按钮被按下时, 活动会创建一个Intent,并在未来3秒内将其加载到AlarmManager中,然后结束。AlarmManager和失败的PendingIntent
所以活动打开,用户按下按钮,活动关闭,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>
答
So activity opens, user pushes button, activity closes, 3 seconds later activity opens, repeat.
你不需要任何服务如果你只是想在闹铃响起时开始你的活动,那么这种情况就会恶化。创建一个启动你的活动的PendingIntent,就是这样。在我的代码中试试这个活动课程 - MyActivity
。
Intent intent = new Intent(MyActivity.this, MyActivity.class);
PendingIntent appIntent =
PendingIntent.getActivity(MyActivity.this, 0, intent, 0);