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);