newintent并未召集重新启动



我有一个闹钟应用程序,即使用警报管理器和广播接收器。该应用是一个单一的活动和4个片段。当警报响起时,OnReceive方法会向主活动发送意图,主活动将在方法onnewintent中接收此意图,然后移至正确的片段。一切正常,除非在关闭应用程序后警报发出。

一旦我销毁了该应用程序,警报仍会响起,并且广播接收器的射击意图,但是Onnewintent方法确实抓住了意图并将应用程序移至正确的片段。

这是传播接收器类中移动到主要活动的目的

Intent alarmIntent = new Intent( context, ClockActivity.class );
                alarmIntent.addFlags(Intent.FLAG_FROM_BACKGROUND);
                alarmIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
                alarmIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                alarmIntent.putExtra("Alarm Name", receivedAlarm.getmName());
                context.startActivity(alarmIntent);

这是我的主要活动中我的onnewintent方法,当应用程序关闭时警报被调用时未被调用。

    @Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    PhraseFragment phraseFragment = new PhraseFragment();
    String activeName = intent.getStringExtra("Alarm Name");
    Bundle args = new Bundle();
    args.putString("activeName", activeName);
    phraseFragment.setArguments(args);
    getFragmentManager().beginTransaction()
            .replace(R.id.container, phraseFragment)
            .addToBackStack("phrase")
            .commit();
}

它有点晚了,但这也许可以帮助某人。

当我在背景上打开活动时,我看到的newintent被调用。当您将意图发送给不在背景上运行的活动时,您可以通过onResume()的getIntent()。

来检索它。

我会将您的代码更改为以下。

@Override
protected void onResume() {
    super.onResume();
    Intent intent = getIntent();
    String activeName = intent.getStringExtra("Alarm Name");
    if (activeName != null){
        PhraseFragment phraseFragment = new PhraseFragment();
        Bundle args = new Bundle();
        args.putString("activeName", activeName);
        phraseFragment.setArguments(args);
        getFragmentManager().beginTransaction()
                .replace(R.id.container, phraseFragment)
               .addToBackStack("phrase")
               .commit();
     }
}
@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    setIntent(intent);
}

在这种情况下,您需要检查您在onResume()中是否收到的意图包含您需要的数据。

请注意,我在文档中尚未找到对此的任何引用。这只是我通过实验得出的结论。

相关内容

  • 没有找到相关文章