Нативні МЕТОДИ І ВИКЛИКИ Нативні ІНТЕРФЕЙСУ JAVA (JNI) в Android додатку

&nbsp

JNI вимагає дотримуватися певних угодами, щоб можна було робити виклики методів з інших мов Нативні методи (по суті, відносяться до бібліотекам С або С + +) зазнають при цьому більш серйозні зміни, ніж код Java

Угоди на стороні нативних методів

Коли VM (віртуальна машина, у випадку з Android це Dalvik) активує функцію, реалізовану на мові С або С + +, машина передає функції два спеціальних параметра:

покажчик JNIEnv, свого роду описатель того потоку, в якому віртуальна машина викликає нативний метод

покажчик jobject, що представляє собою посилання на що викликає клас

Ці параметри явно передаються коду Java Це означає, що вони не згадуються в сигнатурі методу, що оголошується в зухвалій коді Java Виклик Java просто явно передає всі інші параметри, які потрібні для роботи викликаної функції

Функція JNI може мати наступний вигляд:

У цих прикладах показані два параметри, які автоматично передаються кожному нативному методу, і два параметри з типами, відображеними на типи Java

При виклику нативного методу даний метод виконує той же процес і той же потік, що і код Java, що викликає його Як буде показано далі, він може виділяти память з купи Java, щоб користуватися перевагами, повязаними із збіркою сміття, а також брати память поза купи Java, щоб обходити систему управління памяттю, діючу в Java Стекові змінні з коду на С або С + + мають ту ж семантику, що і в нативних виконуваних модулях на цих мовах Вони розміщуються в стеку того процесу, в якому працюють

У JNI надаються типи, які відповідають типам Java, як показано в табл 181

Таблиця 181 Відображення даних

У складених типах – таких як обєкти, масиви і рядки – нативний код повинен явно перетворювати дані, викликаючи методи перетворення, доступні через покажчик JNI Env

Угоди на стороні Java

Перед тим як нативні методи можна буде використовувати в класі Java, потрібно завантажити бібліотеку з нативними методами Для цього потрібно викликати System loadLibrагу Як правило, той клас, якому потрібна нативний метод, статично її завантажує Нативні методи, до яких звертається клас, оголошуються в класі за допомогою ключового слова native:

Джерело: Android Програмування на Java для нового покоління мобільних пристроїв

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*