android 内未调用警报

Alarm not getting called in android

我正在尝试学习 android 中 AlarmManager 的功能。 我试图在每 10 second.But 后调用警报问题是我得到一个空白 screen.Then 我发现我试图在警报唤醒时调用的意图没有得到 called.Please 有人帮我解决这个问题吗?

MainActivity.java

public class MainActivity extends AppCompatActivity {
    private AlarmManager alarmMgr;
    private PendingIntent alarmIntent;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        alarmMgr = (AlarmManager)this.getSystemService(Context.ALARM_SERVICE);
        Intent intent = new Intent(this, AlarmReceiver.class);
        alarmIntent = PendingIntent.getBroadcast(this, 0, intent, 0);
        Log.d("asd","initialized alarmintent");
        alarmMgr.set(AlarmManager.ELAPSED_REALTIME,
                SystemClock.elapsedRealtime()+10*1000, alarmIntent);

                        Log.d("asd", "alarm set");
    }
}

AlarmReceiver.java

public class AlarmReceiver extends AppCompatActivity
{
    TextView tv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.intent_layout);
        Log.d("asd","writing textview");
        tv=(TextView)findViewById(R.id.textview);
        tv.setText("called");
    }

}

您调用 PendingIntent 错误:

Intent intent = new Intent(this, AlarmReceiver.class);
alarmIntent = PendingIntent.getBroadcast(this, 0, intent, 0);

看看你是如何调用 PendingIntent 的。getBroadcast(this, 0, intent, 0)

这是错误的,因为您的 AlarmReceiver 是一个 Activity(不是像您所说的未决意图那样的 BroadcastReceiver)。尝试这样称呼它:

alarmIntent = PendingIntent.getActivity(this, 0, intent, 0);

您的问题只是未决意图的错误使用:)

这是文档:

http://developer.android.com/reference/android/app/PendingIntent.html

编辑:文档还说:

Note that the activity will be started outside of the context of an existing activity, so you must use the Intent.FLAG_ACTIVITY_NEW_TASK launch flag in the Intent.

所以请确保您也这样做了。