具有待定意图的Alarmmanager

Co *_*der 4 android

下面的代码片段....

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    ///////////Do something////////////////////////
    showtext.startScan();
    //SEt Alarm
    Intent intent = new Intent(this, TextReceiver.class);
    PendingIntent pi = PendingIntent.getBroadcast(this, 0, intent, 0);
    AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+9000, pi);}
Run Code Online (Sandbox Code Playgroud)

和我的接收者:

TextReceiver extends BroadcastReceiver{

    public void onReceive(Context context, Intent intent) {
        ///Show text/////
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是,当我在9sn之后运行程序时,我收到一条错误"应用程序意外停止".为什么我会收到此错误?

我的目标是每隔9sn显示一次文本.AlarmManager主要活动的正确用法是什么?
或者我应该设置闹钟BroadcastReceiver?哪一个有意义:am.setRepeating或者am.set就我的目标而言?

**编辑:如何更改我的警报代码以在广播接收器中运行?**

Pad*_*mar 7

//试试这个

AlarmManager am=(AlarmManager)getApplicationContext getSystemService(Context.ALARM_SERVICE);

PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,  intent, PendingIntent.FLAG_CANCEL_CURRENT);

  am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(),(9 * 1000), pendingIntent);
Run Code Online (Sandbox Code Playgroud)

  • PendingIntent.FLAG_CANCEL_CURRENT是我必须用来修复我的问题的标志.谢谢 (2认同)