1.一種插件加載方法,包括:
當宿主程序接收到加載插件的請求時,調用插件加載方法對目標插件進行加載;
在加載目標插件的過程中,創(chuàng)建目標插件的入口類的對象;
利用所述入口類的對象,調用所述入口類中的指定方法緩存目標插件的接口的對象。
2.根據(jù)權利要求1所述的方法,其中,目標插件的接口的對象用于獲取IBinder對象,所述方法還包括:
當外部調用方需要獲取目標插件的IBinder對象時,調用預先定義的預定義類中的指定方法;
利用所述預定義類中的指定方法,從所述入口類中的指定方法中獲取目標插件的接口的對象;
調用目標插件的接口的對象中的指定方法獲取IBinder對象。
3.根據(jù)權利要求2所述的方法,其中,在調用目標插件的接口的對象中的指定方法獲取IBinder對象之后,所述方法還包括:
利用獲取的IBinder對象進行與所述目標插件進行通信。
4.根據(jù)權利要求1-3中任一項所述的方法,其中,所述目標插件的入口類為Entry類。
5.根據(jù)權利要求1-4中任一項所述的方法,其中,所述目標插件的接口為IPlugin接口,所述IPlugin接口的對象為mPlugin對象。
6.根據(jù)權利要求1-5中任一項所述的方法,其中,還包括:
利用所述入口類的對象,反射獲取所述入口類中的指定方法。
7.根據(jù)權利要求2-6中任一項所述的方法,其中,當外部調用方需要獲取目標插件的IBinder對象時,調用預先定義的預定義類中的指定方法,包括:
當外部調用方需要獲取目標插件的IBinder對象時,判斷所述外部調用方所在當前進程與即將返回所述目標插件的IBinder對象的接收方所在目標進程是否為同一進程;
若是,則直接調用預先定義的預定義類中的指定方法。
8.根據(jù)權利要求7所述的方法,其中,還包括:
若所述外部調用方所在當前進程與即將返回所述目標插件的IBinder對象的接收方所在目標進程不為同一進程,則通過所述目標進程中的Provider獲取宿主程序的接口的對象;
由宿主程序的接口的對象中的指定方法,調用預先定義的預定義類中的指定方法。
9.根據(jù)權利要求8所述的方法,其中,所述目標進程為常駐進程。
10.一種插件加載裝置,包括:
加載模塊,適于當宿主程序接收到加載插件的指令時,調用插件加載方法對目標插件進行加載;
創(chuàng)建模塊,適于在加載目標插件的過程中,創(chuàng)建目標插件的入口類的對象;
緩存模塊,適于利用所述入口類的對象,調用所述入口類中的指定方法緩存目標插件的接口的對象。