В вашем методе просто проверьте, если пользователь вошел в систему, если затем прервать до 404, как показано ниже ...
if(\Illuminate\Support\Facades\Auth::check()) {
return abort(404);
}
#Rest of the code is for guest user.....
#
То, что Вы хотите, несколько трудно и мне, довольно неэффективно. Я предложил бы, чтобы Вы использовали первую альтернативу, но когда Вы загружаете Курсор в действии, проверьте, нет ли никаких данных, и затем выйдите из действия.
BroadcastReceiver.onReceive() {
Intent intent = new Intent(...);
intent.setData(...); // set a single String data
context.startActivity(intent);
}
Activity.onCreate() {
String value = intent.getData(); // get the String data
Cursor = ContentProvider.query(search);
if(cursor.isEmpty() ...){
finish();
return;
}
...
setContentView(...);
}
Это будет иметь тот же самый эффект, курсор будет только загружен однажды, и действие будет только отображено, если что-то будет существовать в курсоре. Единственные дополнительные издержки - то, что намерение запущено независимо от того, что, но это не является точно налоговым :)
Обратите внимание, что не будет никакого мерцания, или что-либо также, Android обрабатывает случай вызова конца в onCreate () (я верю onStart и onResume также) так, чтобы пользователь никогда не знал, что это произошло.
Необходимо будет найти или сделать Курсор, это является сериализуемым или Parcelable (и затем используйте intent.setExtra ()). Или возможно возможно вместо этого считать все данные в как пакет и передать это на Действие?