Android AlarmManager和失败的挂起事件

Android AlarmManager和失败的挂起事件,android,android-emulator,Android,Android Emulator,为了学习如何使用AlarmManager,我创建了一个活动 它由一个按钮组成。当按下按钮时 活动创建自己的意图并将其加载到 AlarmManager将在未来3秒钟内完成 活动打开,用户按下按钮,活动关闭,3秒 稍后活动打开,重复 问题是,3秒钟后我得到的不是打开活动,而是 错误: “应用程序[myappname]意外停止。请重试 再说一次,“除非我叫祝酒词,否则就行了 下面是按钮的代码: thanksButton.setOnClickListener(new View.OnClickListen

为了学习如何使用AlarmManager,我创建了一个活动 它由一个按钮组成。当按下按钮时 活动创建自己的意图并将其加载到 AlarmManager将在未来3秒钟内完成

活动打开,用户按下按钮,活动关闭,3秒 稍后活动打开,重复

问题是,3秒钟后我得到的不是打开活动,而是 错误: “应用程序[myappname]意外停止。请重试 再说一次,“除非我叫祝酒词,否则就行了

下面是按钮的代码:

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>

所以活动打开,用户按下按钮,活动关闭,3秒钟后活动打开,重复

如果您只想在闹钟响时开始活动,则不需要任何服务。创建一个悬挂式帐篷,开始您的活动,仅此而已。在活动类中尝试此操作-
MyActivity
在我的代码中

Intent intent = new Intent(MyActivity.this, MyActivity.class);
PendingIntent appIntent = 
        PendingIntent.getActivity(MyActivity.this, 0, intent, 0);