2015-03-15 3 views

ответ

3

Я бы использовал фрагменты вместо действий и получить/установить общий Mat Подарок в контейнере Активность из фрагментов.

Если есть необходимость придерживаться нескольких видов деятельности, при условии, что это в рамках процесса, варианты

  1. Обмен - Использование глобального Application подкласса, чтобы получить/установить Mat предпочтительно в какой-то вещи, как HashMap<String, WeakReference<Mat>> и передавая ключевую строку HashMap по видам деятельности (1). Удостоверьтесь, что вы сохраняете сильную ссылку на Mat до того, как дочерняя активность завершится onResume(), иначе Mat может быть собрано мусором.

  2. Копирование - Использование getNativeObjAddr (2) и передать значение long адрес как часть вызова умысла. Активность ребенка воссоздает Mat с собственным адресом (3). Клонирование Mat у ребенка необходимо, так как родительская активность может быть убита в любое время после завершения onResume дочерней активности.

Образец ниже.

// In parent activity 
Mat img = ...; 
long addr = img.getNativeObjAddr(); 
Intent intent = new Intent(this, B.class); 
intent.putExtra("myImg", addr); 
startActivity(intent); 

//In child activity 
long addr = intent.getLongExtra("myImg", 0); 
Mat tempImg(addr); 
Mat img = tempImg.clone(); 
+2

Что такое tempImg (addr)? – Dhananjay

0

@Kiran является правильным.

Вы должны получить экземпляр матрицы, используя свой собственный адрес.

long frameAddress = intent.getLongExtra("extra_name", 0); 
Mat m = new Mat(frameAddress); 
Смежные вопросы