ஆண்ட்ராய்டின் தடையற்ற செயல்முறை தொடர்புக்கு பின்னால் உள்ள இயந்திரம்
இன்டர்-ப்ராசஸ் கம்யூனிகேஷன் (ஐபிசி) என்பது நவீன இயக்க முறைமைகளில் பயன்பாடுகளும் சேவைகளும் எவ்வாறு இணைந்து செயல்படுகின்றன என்பதற்கான முதுகெலும்பாகும். ஆண்ட்ராய்டில், இது முதன்மையாக பைண்டர் கட்டமைப்பால் நிர்வகிக்கப்படுகிறது* 🛠️
சாக்கெட்டுகள் அல்லது பகிரப்பட்ட நினைவகம் போன்ற பாரம்பரிய ஐபிசி முறைகளைப் போலன்றி, பைண்டர் ஆண்ட்ராய்டின் கட்டமைப்புடன் இறுக்கமாக ஒருங்கிணைக்கப்பட்டுள்ளது. செய்தி அனுப்புதல், தரவுப் பகிர்வு மற்றும் கணினி நிலை கட்டளைகள் போன்ற சேவைகள் திறமையானதாகவும் நம்பகமானதாகவும் இருப்பதை அதன் தேர்வுமுறை உறுதி செய்கிறது. இது பைண்டரை ஆண்ட்ராய்டு சுற்றுச்சூழல் அமைப்பின் தனித்துவமான மற்றும் இன்றியமையாத பகுதியாக ஆக்குகிறது.
கூகுள் மேப்ஸ் போன்ற ஆப்ஸ் எப்படி வெளிப்புறச் சேவைகளிலிருந்து தரவைப் பெறுகிறது அல்லது மூன்றாம் தரப்பு ஆப்ஸுடன் உங்கள் மொபைலின் கேமரா எவ்வாறு தடையின்றி தொடர்பு கொள்கிறது என்று நீங்கள் எப்போதாவது யோசித்திருக்கிறீர்களா? பைண்டரின் இரகசியமானது, குறைந்தபட்ச மேல்நிலையுடன் பல பணிகளைக் கையாளும் திறனில் உள்ளது, இது நெறிப்படுத்தப்பட்ட இடை-செயல்முறைத் தொடர்பை நோக்கமாகக் கொண்ட டெவலப்பர்களுக்கு விருப்பமான தேர்வாக அமைகிறது.
இந்தக் கட்டுரையில், பைண்டரை தனித்து நிற்கச் செய்யும் தேர்வுமுறை நுட்பங்களை நாங்கள் கண்டுபிடிப்போம். நிஜ உலக எடுத்துக்காட்டுகள் மற்றும் தொழில்நுட்ப விவரங்களை ஆராய்வதன் மூலம், பைண்டர் ஏன் Androidக்கான கேம்-சேஞ்சர் என்பதை ஆழமாகப் புரிந்துகொள்வீர்கள். ஆண்ட்ராய்டை சீராக இயங்க வைப்பதற்கு பைண்டர் வேகம், பாதுகாப்பு மற்றும் எளிமை ஆகியவற்றை எவ்வாறு சமநிலைப்படுத்துகிறது என்பதைப் பற்றி பார்ப்போம். 🚀
| கட்டளை | பயன்பாட்டின் உதாரணம் |
|---|---|
| IMyService.Stub.asInterface() | பைண்டர் சேவையுடன் தொடர்புகொள்வதற்காக பொதுவான ஐபிண்டர் பொருளை ஒரு குறிப்பிட்ட இடைமுக வகையாக மாற்ற இந்த முறை பயன்படுத்தப்படுகிறது. இது வகை பாதுகாப்பை உறுதிசெய்கிறது மற்றும் தொலைநிலை சேவையுடனான தொடர்புகளை எளிதாக்குகிறது. |
| onServiceConnected() | கிளையன்ட் வெற்றிகரமாக சேவையை இணைக்கும்போது அழைக்கப்படும். இது சேவையின் IBinder பொருளுக்கு ஒரு குறிப்பை வழங்குகிறது, வாடிக்கையாளர் ஐபிசிக்கான இணைப்பை நிறுவ அனுமதிக்கிறது. |
| onServiceDisconnected() | எதிர்பாராத விதமாக சேவை இணைப்பு தொலைந்தால் தூண்டப்பட்டது. இந்த முறை கிளையன்ட் ஆதாரங்களை சுத்தம் செய்ய அல்லது தேவைக்கேற்ப மீண்டும் இணைக்க முயற்சிக்க அனுமதிக்கிறது. |
| bindService() | கிளையன்ட் மற்றும் சேவைக்கு இடையே ஒரு தொடர்பை ஏற்படுத்த பயன்படுகிறது. இந்த கட்டளை பிணைப்பு செயல்முறையைத் தொடங்குகிறது மற்றும் சேவை நிகழ்வுகளைக் கையாள சர்வீஸ் கனெக்ஷன் கால்பேக்கை பதிவு செய்கிறது. |
| AIDL | AIDL (Android Interface Definition Language) என்பது ஆண்ட்ராய்டில் உள்ள பல்வேறு செயல்முறைகளுக்கு இடையே தகவல் பரிமாற்றத்தை செயல்படுத்தும் ஒரு பொறிமுறையாகும். பைண்டர் இடைமுகங்களை செயல்படுத்த தேவையான கொதிகலன் குறியீட்டை இது உருவாக்குகிறது. |
| ServiceConnection | ஒரு சேவையுடன் தங்கள் இணைப்பின் நிலையைக் கண்காணிக்க வாடிக்கையாளர்களால் பயன்படுத்தப்படும் இடைமுகம். இது இணைப்பு வாழ்க்கைச் சுழற்சியை நிர்வகிக்க onServiceConnected மற்றும் onServiceDisconnected போன்ற கால்பேக்குகளை வழங்குகிறது. |
| RemoteException | தொலைநிலை முறை அழைப்பு தோல்வியுற்றால் விதிவிலக்கு. இது IPC காட்சிகளுக்கு குறிப்பிட்டது மற்றும் குறுக்கு-செயல்முறை தகவல்தொடர்புகளில் பிழைகளைக் கையாள உதவுகிறது. |
| IBinder | கிளையன்ட் மற்றும் சேவைக்கு இடையேயான தகவல் தொடர்பு சேனலைக் குறிக்கும் குறைந்த-நிலை இடைமுகம். இது ஆண்ட்ராய்டின் பைண்டர் கட்டமைப்பில் உள்ள அனைத்து ஐபிசி வழிமுறைகளுக்கும் அடிப்படையாக அமைகிறது. |
| getMessage() | பைண்டர் சேவையிலிருந்து வாடிக்கையாளருக்கு தரவை எவ்வாறு அனுப்புவது என்பதை விளக்குவதற்கு ஏஐடிஎல் இடைமுகத்தில் வரையறுக்கப்பட்ட தனிப்பயன் முறை. இந்த குறிப்பிட்ட கட்டளை தொலைநிலை முறை அழைப்பின் தெளிவான உதாரணத்தை வழங்குகிறது. |
ஆண்ட்ராய்டில் பைண்டர் ஆப்டிமைஸ் செய்யப்பட்ட ஐபிசியின் இயக்கவியலை வெளியிடுகிறது
முன்பு வழங்கப்பட்ட ஸ்கிரிப்ட்கள், பைண்டர் கட்டமைப்பு ஆண்ட்ராய்டில் உள்ள செயல்முறைகளுக்கு இடையே திறமையான மற்றும் பாதுகாப்பான தகவல்தொடர்புகளை எவ்வாறு எளிதாக்குகிறது என்பதை நிரூபிக்கிறது. இந்த எடுத்துக்காட்டின் மையத்தில் ஆண்ட்ராய்டு இடைமுக வரையறை மொழியைப் பயன்படுத்தி ஒரு சேவையை உருவாக்குவது (), இது வாடிக்கையாளர்களையும் சேவையகங்களையும் கட்டமைக்கப்பட்ட தரவைப் பரிமாற அனுமதிக்கிறது. பைண்டர் ஒரு வழித்தடமாக செயல்படுகிறது, கிளையன்ட் சேவையகத்தில் உள்ள முறைகளை அவர்கள் உள்ளூர் போல் அழைக்க உதவுகிறது. பின்னணி சேவையிலிருந்து அறிவிப்புகளை மீட்டெடுக்கும் செய்தியிடல் பயன்பாடு போன்ற பகிரப்பட்ட சேவைகள் தேவைப்படும் பயன்பாடுகளுக்கு இது மிகவும் பயனுள்ளதாக இருக்கும். 📲
சேவையக பக்க ஸ்கிரிப்ட் AIDL இடைமுகத்தை செயல்படுத்துகிறது மற்றும் அதை ஒரு சேவையாக பதிவு செய்கிறது. இங்கே, தி இந்த முறை மிகவும் முக்கியமானது, ஏனெனில் இது வாடிக்கையாளர்களுக்கு இடைமுகத்தை வெளிப்படுத்துகிறது. எடுத்துக்காட்டாக, வழங்கப்பட்ட எடுத்துக்காட்டில், சேவையானது ஒரு எளிய சரம் செய்தியை வழங்கும் `getMessage()` முறையை வரையறுக்கிறது. இது ஆண்ட்ராய்டின் சேவை கட்டமைப்பிற்கு விருப்பமான தேர்வாக அமைந்து, குறைந்தபட்ச மேல்நிலையுடன் இடை-செயல் முறை அழைப்புகளைக் கையாளும் பைண்டரின் திறனின் நேர்த்தியான நிரூபணமாகும்.
கிளையன்ட் பக்கத்தில், ஸ்கிரிப்ட் எவ்வாறு சேவையுடன் பிணைப்பது மற்றும் தொலைநிலை முறைகளை அழைப்பதற்கு AIDL இடைமுகத்தைப் பயன்படுத்துவது என்பதை விளக்குகிறது. தி செயல்பாடு ஒரு இணைப்பை நிறுவுகிறது, மேலும் `onServiceConnected()` போன்ற கால்பேக்குகள் கிளையன்ட் சர்வரின் பைண்டர் இடைமுகத்தை அணுகுவதை உறுதி செய்கிறது. இதற்கு ஒரு நடைமுறை உதாரணம் ஒரு மியூசிக் பிளேயர் ஆப்ஸ் தற்போது மீடியா சேவையிலிருந்து பாடல்களை இயக்குவது பற்றிய தரவைப் பெறுகிறது. இந்த முறைகள் குறுக்கு-செயல்முறை தகவல்தொடர்புகளின் சிக்கல்களைத் தவிர்த்து, டெவலப்பர்கள் தொடர்புகொள்வதற்கு சுத்தமான API ஐ வழங்குகிறது.
பைண்டரின் தேர்வுமுறை அம்சங்களில் ஒன்று, பெரிய தரவு பரிமாற்றங்களுக்கு பகிரப்பட்ட நினைவகத்தைப் பயன்படுத்துவதாகும், சாக்கெட்டுகள் அல்லது குழாய்கள் போன்ற பிற IPC வழிமுறைகளுடன் ஒப்பிடும்போது மேல்நிலையைக் குறைக்கிறது. கூடுதலாக, பைண்டரில் உள்ள கர்னல்-நிர்வகிக்கப்பட்ட பாதுகாப்பு, அங்கீகரிக்கப்பட்ட செயல்முறைகள் மட்டுமே தொடர்பு கொள்ள முடியும் என்பதை உறுதிசெய்கிறது, இது முக்கியமான செயல்பாடுகளைப் பாதுகாக்கிறது. பைண்டர் மிகவும் திறமையானதாக இருந்தாலும், அதிக அதிர்வெண் அழைப்புகள் அல்லது பாரிய தரவு பரிமாற்றங்கள் சம்பந்தப்பட்ட காட்சிகள் சில செயல்திறன் வர்த்தக பரிமாற்றங்களை வெளிப்படுத்தலாம். இருப்பினும், ஆண்ட்ராய்டின் முக்கிய கட்டமைப்பில் அதன் ஒருங்கிணைப்பு வலுவான பயன்பாடுகளை உருவாக்குவதற்கு இன்றியமையாததாக ஆக்குகிறது. 🚀
ஆண்ட்ராய்டில் திறமையான தொடர்பு: பைண்டர் ஆப்டிமைஸ் செய்யப்பட்ட ஐபிசியை ஆய்வு செய்தல்
இந்த தீர்வு ஜாவாவில் எழுதப்பட்ட ஆண்ட்ராய்டில் பைண்டரைப் பயன்படுத்தி கிளையன்ட்-சர்வர் தொடர்பு அமைப்பை செயல்படுத்துவதில் கவனம் செலுத்துகிறது. திறமையான IPCஐ எளிதாக்குவதற்கு AIDL (Android Interface Definition Language) இன் பயன்பாட்டை இது நிரூபிக்கிறது.
// File: IMyService.aidlpackage com.example.myservice;interface IMyService {String getMessage();}
பைண்டர் சேவையை செயல்படுத்துதல்
பின்வரும் ஸ்கிரிப்ட் ஜாவாவைப் பயன்படுத்தி பைண்டர் சேவையின் சர்வர் பக்க செயலாக்கத்தை நிரூபிக்கிறது. இந்தச் சேவை ஒரு செய்தியைத் திருப்பி அனுப்புவதற்கான எளிய முறையை வழங்குகிறது.
// File: MyService.javapackage com.example.myservice;import android.app.Service;import android.content.Intent;import android.os.IBinder;import android.os.RemoteException;public class MyService extends Service {private final IMyService.Stub binder = new IMyService.Stub() {@Overridepublic String getMessage() throws RemoteException {return "Hello from the Binder service!";}};@Overridepublic IBinder onBind(Intent intent) {return binder;}}
கிளையண்ட்-சைட் பைண்டர் தொடர்புகளை உருவாக்குதல்
இந்த ஸ்கிரிப்ட் பைண்டர் சேவையுடன் இணைக்க மற்றும் தரவைப் பெற கிளையன்ட் பக்க செயலாக்கத்தை வழங்குகிறது.
// File: ClientActivity.javapackage com.example.myclient;import android.content.ComponentName;import android.content.Intent;import android.content.ServiceConnection;import android.os.Bundle;import android.os.IBinder;import android.os.RemoteException;import android.widget.TextView;import androidx.appcompat.app.AppCompatActivity;import com.example.myservice.IMyService;public class ClientActivity extends AppCompatActivity {private IMyService myService;private boolean isBound = false;private final ServiceConnection connection = new ServiceConnection() {@Overridepublic void onServiceConnected(ComponentName name, IBinder service) {myService = IMyService.Stub.asInterface(service);isBound = true;fetchMessage();}@Overridepublic void onServiceDisconnected(ComponentName name) {isBound = false;myService = null;}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_client);Intent intent = new Intent();intent.setComponent(new ComponentName("com.example.myservice", "com.example.myservice.MyService"));bindService(intent, connection, BIND_AUTO_CREATE);}private void fetchMessage() {if (isBound && myService != null) {try {String message = myService.getMessage();TextView textView = findViewById(R.id.textView);textView.setText(message);} catch (RemoteException e) {e.printStackTrace();}}}}
பைண்டர் தகவல்தொடர்புக்கான அலகு சோதனை
பைண்டர் சேவையின் செயல்பாட்டைச் சரிபார்க்க ஜாவாவில் எழுதப்பட்ட ஒரு யூனிட் சோதனை.
// File: MyServiceTest.javapackage com.example.myservice;import android.content.ComponentName;import android.content.Intent;import android.content.ServiceConnection;import android.os.IBinder;import android.os.RemoteException;import org.junit.Before;import org.junit.Test;import static org.junit.Assert.*;public class MyServiceTest {private IMyService myService;private boolean isBound = false;private final ServiceConnection connection = new ServiceConnection() {@Overridepublic void onServiceConnected(ComponentName name, IBinder service) {myService = IMyService.Stub.asInterface(service);isBound = true;}@Overridepublic void onServiceDisconnected(ComponentName name) {isBound = false;myService = null;}};@Beforepublic void setUp() {Intent intent = new Intent();intent.setComponent(new ComponentName("com.example.myservice", "com.example.myservice.MyService"));// Assuming bindService is a mocked method for testingbindService(intent, connection, 0);}@Testpublic void testGetMessage() throws RemoteException {if (isBound) {String message = myService.getMessage();assertEquals("Hello from the Binder service!", message);}}}
பைண்டர் ஐபிசியின் பாதுகாப்பு மற்றும் செயல்திறனுடன் ஆராய்தல்
இன் தனித்துவமான அம்சங்களில் ஒன்று ஆண்ட்ராய்டின் பாதுகாப்பு மாதிரியுடன் அதன் இறுக்கமான ஒருங்கிணைப்பு ஆகும். பாரம்பரிய ஐபிசி பொறிமுறைகளைப் போலன்றி, பைண்டர் ஒரு தனித்துவமான பாதுகாப்பு அடுக்கை உட்பொதிக்கிறது, இது தொடர்பு செயல்முறைகளின் அடையாளத்தை சரிபார்க்கிறது. கர்னலில் இருந்து நேரடியாக அனுப்பப்பட்ட நற்சான்றிதழ்கள் மூலம் இது அடையப்படுகிறது, அங்கீகரிக்கப்பட்ட பயன்பாடுகள் அல்லது சேவைகள் மட்டுமே தொடர்பு கொள்ள முடியும் என்பதை உறுதி செய்கிறது. எடுத்துக்காட்டாக, பரிவர்த்தனை செயலாக்கத்திற்கான சிஸ்டம் சேவையுடன் வங்கிப் பயன்பாடு தொடர்பு கொள்ளும்போது, அங்கீகரிக்கப்படாத பயன்பாடுகளால் இந்தத் தரவை இடைமறிக்கவோ அல்லது கையாளவோ முடியாது என்பதை பைண்டர் உறுதிசெய்கிறது. 🔒
பைண்டர் பாரம்பரிய ஐபிசி முறைகளை மிஞ்சும் மற்றொரு பகுதி செயல்திறன். பைண்டர் பெரிய பேலோடுகளை மாற்றுவதற்கு பகிரப்பட்ட நினைவகத்தைப் பயன்படுத்தி தரவு நகலெடுப்பைக் குறைக்கிறது, இது மேல்நிலையைக் குறைக்கிறது. இது சாக்கெட்டுகள் போன்ற பொறிமுறைகளுடன் முரண்படுகிறது, இது பெரும்பாலும் பயனர் மற்றும் கர்னல் இடைவெளிக்கு இடையில் பல தரவு நகல்களை தேவைப்படுகிறது. புகைப்பட எடிட்டிங் பயன்பாடு மற்றொரு சேவையிலிருந்து உயர் தெளிவுத்திறன் கொண்ட படங்களை மீட்டெடுக்கும் ஒரு காட்சியை கற்பனை செய்து பாருங்கள். பைண்டரின் செயல்திறன், கணினி வளங்களை வடிகட்டாமல், பயன்பாடு அத்தகைய செயல்பாடுகளை சீராக கையாளும் என்பதை உறுதி செய்கிறது.
பைண்டர் உள்ளமை அல்லது "பார்சல் செய்யக்கூடிய" பொருட்களையும் ஆதரிக்கிறது, அதாவது டெவலப்பர்கள் தடையற்ற பரிமாற்றத்திற்காக சிக்கலான தரவு வகைகளை கட்டமைக்க முடியும். எடுத்துக்காட்டாக, வழிசெலுத்தல் பயன்பாடு, சேவைக்கு வழிப் புள்ளிகளின் பட்டியலை அனுப்பும், இந்தத் தரவுப் புள்ளிகளை பார்சல்களாக குறியாக்க பைண்டரைப் பயன்படுத்தலாம். இருப்பினும், டெவலப்பர்கள் அதிக அளவு அடிக்கடி வரும் கோரிக்கைகளைக் கையாள்வதில் கவனமாக இருக்க வேண்டும், ஏனெனில் இது செயல்திறன் இடையூறுகளுக்கு வழிவகுக்கும். இது இருந்தபோதிலும், பைண்டர் ஆண்ட்ராய்டின் ஐபிசி சுற்றுச்சூழல் அமைப்பின் மூலக்கல்லாக உள்ளது, பாதுகாப்பு, செயல்திறன் மற்றும் பயன்பாட்டின் எளிமை ஆகியவற்றை சமநிலைப்படுத்துகிறது. 🚀
- பாரம்பரிய ஐபிசியிலிருந்து பைண்டரை வேறுபடுத்துவது எது?
- பைண்டர் கர்னல்-நிலையை மேம்படுத்துகிறது பல தரவுப் பிரதிகள் தேவைப்படும் சாக்கெட்டுகள் அல்லது குழாய்களைப் போலன்றி, உகந்த தகவல்தொடர்புக்கான இடைமுகங்கள் மற்றும் பகிர்ந்த நினைவகம்.
- பைண்டர் எவ்வாறு பாதுகாப்பை உறுதி செய்கிறது?
- செயல்பாட்டின் அடையாளங்களை அங்கீகரிக்க பைண்டர் கர்னலைப் பயன்படுத்துகிறது, அங்கீகரிக்கப்பட்ட பயன்பாடுகள் அல்லது சேவைகளை மட்டுமே இணைக்க முடியும் என்பதை உறுதிசெய்கிறது.
- பைண்டர் பெரிய தரவு பரிமாற்றங்களை திறமையாக கையாள முடியுமா?
- ஆம், பைண்டர் பெரிய தரவு பரிமாற்றங்களுக்கு மேல்நிலையைக் குறைக்க பகிரப்பட்ட நினைவகத்தைப் பயன்படுத்துகிறது, இது கோப்பு பகிர்வு போன்ற காட்சிகளுக்கு ஏற்றதாக அமைகிறது.
- பைண்டரின் சில வரம்புகள் என்ன?
- பைண்டர் அதிக அதிர்வெண் அல்லது அதிக அளவிலான IPC அழைப்புகளைக் கையாளும் போது, அதன் ஒற்றை-திரிக்கப்பட்ட வரிசை மாதிரியின் காரணமாக செயல்திறன் சவால்களை எதிர்கொள்ளக்கூடும்.
- பைண்டர் நிகழ்நேர பயன்பாடுகளுக்கு ஏற்றதா?
- பைண்டர் திறமையானது ஆனால் கேமிங் என்ஜின்கள் போன்ற சில நிகழ்நேர பயன்பாடுகளின் குறைந்த தாமத தேவைகளை பூர்த்தி செய்யாமல் போகலாம்.
பைண்டர் ஆப்டிமைஸ் செய்யப்பட்ட ஐபிசி என்பது ஆண்ட்ராய்டின் ஒரு மூலக்கல்லாகும், இது ஆப்ஸ் மற்றும் சிஸ்டம் சேவைகளுக்கு இடையே திறமையான மற்றும் பாதுகாப்பான தொடர்பை செயல்படுத்துகிறது. அதன் தனித்துவமான கட்டமைப்பு தேவையற்ற தரவு நகல்களைத் தவிர்ப்பதன் மூலமும், நவீன பயன்பாடுகளுக்கு முக்கியமான விரைவான தொடர்புகளை உறுதி செய்வதன் மூலமும் மேல்நிலையைக் குறைக்கிறது. 🛠️
பைண்டர் பெரும்பாலான காட்சிகளில் சிறந்து விளங்கும் போது, டெவலப்பர்கள் அதிக சுமை நிலைகளில் வர்த்தக பரிமாற்றங்களைக் கருத்தில் கொள்ள வேண்டும். வரம்புகள் இருந்தபோதிலும், வேகம் மற்றும் பாதுகாப்பை சமநிலைப்படுத்தும் அதன் திறன் அதை ஆண்ட்ராய்டின் சுற்றுச்சூழல் அமைப்பின் இன்றியமையாத பகுதியாக ஆக்குகிறது. பின்னணி சேவைகள் முதல் பயன்பாட்டு ஒருங்கிணைப்புகள் வரை, பைண்டர் சாதனங்கள் முழுவதும் தடையற்ற பயனர் அனுபவங்களை இயக்குகிறது. 📱
- அதிகாரப்பூர்வ ஆண்ட்ராய்டு டெவலப்பர் வழிகாட்டியிலிருந்து பைண்டர் ஐபிசி மற்றும் அதன் கட்டமைப்பு பற்றிய விரிவான விளக்கம்: ஆண்ட்ராய்டு டெவலப்பர் கையேடு - ஏஐடிஎல் .
- ஆண்ட்ராய்டில் இடை-செயல்முறை தொடர்பு வழிமுறைகளின் விரிவான பகுப்பாய்வு: ஆண்ட்ராய்டு திறந்த மூல திட்டம் - பைண்டர் ஐபிசி .
- ஆண்ட்ராய்டு சிஸ்டம் வடிவமைப்பு மற்றும் ஐபிசியில் பைண்டரின் பங்கு பற்றிய நுண்ணறிவு நிபுணர் மன்றங்களிலிருந்து: ஸ்டாக் ஓவர்ஃப்ளோ - பைண்டர் எவ்வாறு செயல்படுகிறது .
- உகந்த ஐபிசி முறைகள் மற்றும் ஆண்ட்ராய்டு சிஸ்டங்களில் அவற்றின் பயன்பாடு பற்றிய ஆழமான ஆராய்ச்சி: ArXiv ஆராய்ச்சி தாள் - ஆண்ட்ராய்டில் உகந்த ஐபிசி .