Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android AlarmManager唤醒具有不同意图的应用程序_Java_Android_Android Intent_Alarmmanager - Fatal编程技术网

Java Android AlarmManager唤醒具有不同意图的应用程序

Java Android AlarmManager唤醒具有不同意图的应用程序,java,android,android-intent,alarmmanager,Java,Android,Android Intent,Alarmmanager,我们的应用程序使用AlarmManager以某种挂起内容唤醒应用程序,此意图始终正确地传递给onReceive方法。在以下代码中,alarmid和alarmuser具有正确的信息: @Override public void onReceive(Context ctx, Intent intent) { Intent i = new Intent(context, MainActivity.class); i.putExtra("alarmid", intent.getIntEx

我们的应用程序使用AlarmManager以某种挂起内容唤醒应用程序,此意图始终正确地传递给onReceive方法。在以下代码中,alarmid和alarmuser具有正确的信息:

@Override
public void onReceive(Context ctx, Intent intent) {
    Intent i = new Intent(context, MainActivity.class);
    i.putExtra("alarmid", intent.getIntExtra("id", -1));
    i.putExtra("alarmuser", intent.getStringExtra("user"));
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

    context.startActivity(i);
}
但是当出于此目的调用startActivity时,只有在调用onCreate方法时才会提供额外的数据。因此,这段代码运行良好,变量设置如下:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if(getIntent().hasExtra("alarmid") && getIntent().hasExtra("alarmuser")) {
        String alarmId = getIntent().getExtras().getString("alarmid");
        String alarmUser = getIntent().getExtras().getString("alarmuser");
    }
}
然而,如果使用onRestart,我们会得到一个空的意图(没有额外的)。也就是说,此代码不起作用,并且永远不会设置变量:

@Override
public void onRestart() {
    super.onRestart();

    if(getIntent().hasExtra("alarmid") && getIntent().hasExtra("alarmuser")) {
        String alarmId = getIntent().getExtras().getString("alarmid");
        String alarmUser = getIntent().getExtras().getString("alarmuser");
    }
}
因此,onStart(显然是在onCreate和onRestart之后调用)有时有我们的额外功能,有时没有

我们是做错了还是应该这样做?

i.setFlags(Intent.FLAG\u ACTIVITY\u NEW\u TASK)这一行可能是您的问题。请尝试将其删除,然后重试。如果没有帮助,尝试将变量传递给静态变量,这样就不会丢失它们。