Yes, there is,
use object method Utils_RecordBrowser::switch_to_addon(<addon label>);
to make changes permanent (will work after EPESI update) register your own processing callback for desired recordset.
And here is the code for Tasks (modules/CRM/Tasks/TasksCommon_0.php - line 194) - it won't be preserved upon update!
public static function submit_task($values, $mode) {
$me = CRM_ContactsCommon::get_my_record();
switch ($mode) {
case 'display':
// add following lines
if (isset(Utils_RecordBrowser::$rb_obj) && Utils_RecordBrowser::$rb_obj->get_module_variable('xyz_switch_tab', true)) {
Utils_RecordBrowser::$rb_obj->switch_to_addon('Meetings');
Utils_RecordBrowser::$rb_obj->set_module_variable('xyz_switch_tab', false);
}
... rest of the method
switch to addon stores that RB should switch to addon, but we can't do this every time, because we'll get execution loop or stuck in just one tab. So I've used module variables to mark that we've called switch to tab already. And you have to check isset(Utils..::rb_obj) because processing callbacks are executed also without GUI, when some scripts do update/new record.
Regards,
Adam