CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: bluemask con ben 1 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: bluemask con ben 2 Thanks ricevuti negli ultimi sette giorni
Utente del mese: megthebest con ben 28 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 3 su 3
Discussione:

Chiarimento codice predefinito in Android Interface Definition Language (AIDL)

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Baby Droid


    Registrato dal
    Jul 2011
    Messaggi
    38
    Smartphone
    Samsung Galaxy S3 LTE GT-i9305

    Ringraziamenti
    6
    Ringraziato 1 volta in 1 Post
    Predefinito

    Chiarimento codice predefinito in Android Interface Definition Language (AIDL)

    Ciao a tutti,

    Stavo leggendo un po' di "teoria" sulla pagina ufficiale per gli Android developers di Google.
    E mi chiedevo che tipo di tecnica è quella che vedete sia nel link che nel codice ricopiato sottostante.
    O meglio, avendo delle basi di Java (intermedio) vorrei capire a livello teorico ciò che accade in quella particolare creazione dell'istanza mBinder con quel modo di creare un costruttore.

    Link: AIDL

    codice:
    public class RemoteService extends Service {
        @Override
        public void onCreate() {
            super.onCreate();
        }
    
        @Override
        public IBinder onBind(Intent intent) {
            // Return the interface
            return mBinder;
        }
    
        private final IRemoteService.Stub mBinder = new IRemoteService.Stub() {
            public int getPid(){
                return Process.myPid();
            }
            public void basicTypes(int anInt, long aLong, boolean aBoolean,
                float aFloat, double aDouble, String aString) {
                // Does nothing
            }
        };
    }
    Spero di aver azzeccato la sezione e che qualcuno riesca gentilmente a darmi una mano ad imparare nuove cose.

    Grazie a tutti intanto dell'attenzione.

  2.  
  3. #2
    Androidiani Power User L'avatar di Crotan


    Registrato dal
    Jul 2013
    Località
    Roma
    Messaggi
    1,265
    Smartphone
    Redmi Note 9 Pro

    Ringraziamenti
    401
    Ringraziato 1,445 volte in 626 Posts
    Predefinito

    La documentazione ufficiale, relativamente al metodo onBind(Intent intent), riporta quanto segue:

    "Return the communication channel to the service. May return null if clients can not bind to the service. The returned IBinder is usually for a complex interface that has been described using aidl.
    Note that unlike other application components, calls on to the IBinder interface returned here may not happen on the main thread of the process."

  4. #3
    Baby Droid


    Registrato dal
    Jul 2011
    Messaggi
    38
    Smartphone
    Samsung Galaxy S3 LTE GT-i9305

    Ringraziamenti
    6
    Ringraziato 1 volta in 1 Post
    Predefinito

    Grazie della risposta, però volevo anche capire la teoria Java che ci sta dietro. Ovvero, (al di là del fatto che son classi predefinite che vanno semplicemente chiamate ed usate indipendentemente da come sono state implementate) mi sembra di capire che la chiamata fatta in quel modo è perché stiamo utilizzando un costruttore di una classe (Stub) che si trova all'interno della classe IRemotService giusto?
    Solitamente un classico costruttore ha la forma:

    nomeDellaClasse(/*possibili parametri...*/); //classico costruttore

    Nel caso precedentemente postato però abbiamo una "aperta graffa" a seguito del costruttore, e dei metodi (che non sono nemmeno @Override), perciò vorrei capire anche a livello teorico quale senso ha e con che criterio si utilizza quel modo di programmare. E' per caso relativo a qualche Design Pattern particolare?
    Grazie in anticipo.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy