日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

詳解Android跨進程通信之AIDL

瀏覽:23日期:2022-09-19 17:10:44

需求描述

進程A調起第三方進程B進行第三方登錄 ? 實現雙向通信

代碼(進程A)1.目錄結構

詳解Android跨進程通信之AIDL

2.LoginActivity.java

public class LoginActivity extends AppCompatActivity { private ILoginInterface iLogin; @Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initService(); } private void initService() {// 綁定進程B中的服務Intent intent = new Intent();intent.setAction('ACTION_B');intent.setPackage('com.example.processs');bindService(intent, conn, BIND_AUTO_CREATE); } private ServiceConnection conn = new ServiceConnection() {@Overridepublic void onServiceConnected(ComponentName name, IBinder service) { // 獲取到進程B中的binder對象 iLogin = ILoginInterface.Stub.asInterface(service);}@Overridepublic void onServiceDisconnected(ComponentName name) {} }; /** * 去登錄 * * @param view */ public void goLogin(View view) {try { if (iLogin != null) {iLogin.login(); } else {Toast.makeText(this, '未安裝第三方應用啊~', Toast.LENGTH_SHORT).show(); }} catch (RemoteException e) { e.printStackTrace();} } @Override protected void onDestroy() {super.onDestroy();if (iLogin != null) { unbindService(conn);} }}

對應界面

詳解Android跨進程通信之AIDL

3. ILoginInterface.aidl

// ILoginInterface.aidlpackage com.example.process;// Declare any non-default types here with import statementsinterface ILoginInterface { void login(); void loginCallback(int loginStatus, String loginUser);}4.LoginService.java 用于進程B登錄回調的Service

public class LoginService extends Service { @Nullable @Override public IBinder onBind(Intent intent) {// 該Binder對象返回給進程B來回調return new ILoginInterface.Stub() { @Override public void login() throws RemoteException { } @Override public void loginCallback(int loginStatus, String loginUser) throws RemoteException {Log.d('lichaojun123>>>', 'loginCallback: ' + loginStatus + ' : ' + loginUser); }}; }}5.AndroidManifest.xml

<?xml version='1.0' encoding='utf-8'?><manifest xmlns:android='http://schemas.android.com/apk/res/android' xmlns:tools='http://schemas.android.com/tools' package='com.example.processc'> <applicationandroid:allowBackup='true'android:icon='@mipmap/ic_launcher'android:label='@string/app_name'android:roundIcon='@mipmap/ic_launcher_round'android:supportsRtl='true'android:theme='@style/AppTheme'><activity android:name='com.example.process.LoginActivity'> <intent-filter><action android:name='android.intent.action.MAIN' /><category android:name='android.intent.category.LAUNCHER' /> </intent-filter></activity><service android:name='com.example.process.LoginService' android:enabled='true' // 是否可以被系統實例化 android:exported='true' // 是否可以被其他進程隱式調用 android:process=':remote_a'> <intent-filter><action android:name='ACTION_A'/> </intent-filter></service> </application></manifest>代碼(進程B)1.目錄結構

詳解Android跨進程通信之AIDL

2.LoginActivity.java

public class LoginActivity extends AppCompatActivity { private EditText etName; private EditText etPwd; private ILoginInterface iLogin; @Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);etName = findViewById(R.id.et_name);etPwd = findViewById(R.id.et_pwd);initService(); } private void initService() {// 綁定進程A中的服務Intent intent = new Intent();intent.setAction('ACTION_A');intent.setPackage('com.example.processc');bindService(intent, conn, BIND_AUTO_CREATE); } private ServiceConnection conn = new ServiceConnection() {@Overridepublic void onServiceConnected(ComponentName name, IBinder service) { iLogin = ILoginInterface.Stub.asInterface(service);}@Overridepublic void onServiceDisconnected(ComponentName name) {} }; // 去登錄 public void go_login(View view) {if (etName.getText().toString().trim().equals('lcj')&& etPwd.getText().toString().trim().equals('123')) { try {if (iLogin != null) { // 登錄成功后,通知客戶端進程 iLogin.loginCallback(1, '登錄成功'); finish();} } catch (RemoteException e) {e.printStackTrace(); }} else { Toast.makeText(this, '登錄失敗', Toast.LENGTH_SHORT).show();} } @Override protected void onDestroy() {super.onDestroy();if (iLogin != null) { unbindService(conn);} }}

對應界面

詳解Android跨進程通信之AIDL

3. ILoginInterface.aidl (與進程A相同)4. LoginService.java 用于進程A調用的Service

public class LoginService extends Service { @Nullable @Override public IBinder onBind(Intent intent) {return new ILoginInterface.Stub() { @Override public void login() throws RemoteException {execLogin(); } @Override public void loginCallback(int loginStatus, String loginUser) throws RemoteException { }}; } private void execLogin() {// 調起登錄頁面Intent intent = new Intent(this, LoginActivity.class);intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);startActivity(intent); }}5.AndroidManifest.xml

<applicationandroid:allowBackup='true'android:icon='@mipmap/ic_launcher'android:label='@string/app_name'android:roundIcon='@mipmap/ic_launcher_round'android:supportsRtl='true'android:theme='@style/AppTheme'><activity android:name='.LoginActivity'> <intent-filter><action android:name='android.intent.action.MAIN' /><category android:name='android.intent.category.LAUNCHER' /> </intent-filter></activity><service android:name='.LoginService' android:enabled='true' android:exported='true' android:process=':remote_b'> <intent-filter><action android:name='ACTION_B'/> </intent-filter></service> </application>

以上就是詳解Android跨進程通信之AIDL的詳細內容,更多關于Android跨進程通信AIDL的資料請關注好吧啦網其它相關文章!

標簽: Android
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲精品欧美| 久久精品99国产精品| 亚洲精品网址| 91精品福利| 91中文字幕精品永久在线| 国户精品久久久久久久久久久不卡| 91精品韩国| 国产中文欧美日韩在线| 欧美日韩国产欧| 欧美成人日韩| 日韩欧美1区| 婷婷精品在线| 日韩精品高清不卡| 欧美在线观看天堂一区二区三区| 日韩啪啪电影网| 成人久久久久| 99久久久久| 午夜视频精品| 日韩精品亚洲aⅴ在线影院| 欧美国产免费| 日韩超碰人人爽人人做人人添| 久久久久97| 亚洲精品综合| 日本aⅴ亚洲精品中文乱码| 亚洲美女91| 丝袜美腿高跟呻吟高潮一区| 日韩欧美综合| 日韩精品永久网址| 亚洲一区欧美激情| 午夜一级久久| 日韩精品水蜜桃| 国产福利91精品一区二区| 欧美一区在线观看视频| 麻豆视频在线看| 亚洲免费成人| 精品捆绑调教一区二区三区| 国产精品第十页| 国产伦精品一区二区三区千人斩| 国产精品日韩久久久| 99久精品视频在线观看视频| 久久久国产精品入口麻豆| 91久久中文| 久久精品二区三区| 红杏一区二区三区| 97精品久久| 91成人精品视频| 欧美视频一区| 免费一级片91| 亚洲免费黄色| 亚洲一区中文| 老牛国产精品一区的观看方式| 蜜桃av一区二区三区电影| 国产精久久久| 欧美亚洲三级| 日本一区福利在线| 日本在线观看不卡视频| 日韩激情精品| 日本中文字幕不卡| 欧美91视频| 免费成人在线视频观看| 国产亚洲精品精品国产亚洲综合| 欧美aa一级| 麻豆网站免费在线观看| 99成人在线| 久久都是精品| 久久99性xxx老妇胖精品| 欧美日韩91| 日产午夜精品一线二线三线| 亚洲网址在线观看| 亚洲特级毛片| 欧美亚洲自偷自偷| 四虎精品永久免费| 新版的欧美在线视频| 久色成人在线| 日本欧美一区| 国产欧美日韩一区二区三区在线| 综合激情五月婷婷| 中文亚洲免费| 国产亚洲精品美女久久| 岛国av在线网站| 日本成人在线视频网站| 日韩精品免费视频一区二区三区| 精品视频一区二区三区四区五区 | 激情综合五月| 国产精品videosex极品| 日韩1区2区日韩1区2区| 国产99久久| 亚洲精品日韩久久| 欧美亚洲激情| 欧美亚洲在线日韩| 黄色免费成人| 欧美大黑bbbbbbbbb在线| 久久九九国产| 高潮一区二区| 亚洲成人三区| 国产精品极品国产中出| 日韩精品免费一区二区三区| 免费一区二区视频| 中文一区在线| 欧美三级网址| 国产欧美一区二区色老头| 免费观看在线综合| 亚洲精品自拍| 久久中文字幕av| 欧美美女一区| 成人va天堂| 免费福利视频一区二区三区| 国产资源在线观看入口av| 国产日韩在线观看视频| 午夜精品网站| 亚洲www啪成人一区二区| 蜜桃tv一区二区三区| 亚洲一区二区网站| 黄色国产精品| 日韩激情视频网站| 免费日韩成人| 亚洲美洲欧洲综合国产一区| 国产视频一区在线观看一区免费| 亚洲深夜av| 欧美成人精品三级网站| 91精品啪在线观看国产18| 国产在线不卡| 国产一级一区二区| 青草av.久久免费一区| 日韩成人高清| 国产一区二区三区日韩精品| 日本成人手机在线| 成人美女视频| 亚洲一级少妇| 蜜桃tv一区二区三区| 日韩精品一卡二卡三卡四卡无卡| 亚洲免费成人av在线| 国产91一区| 欧美日韩精品一本二本三本| 久久精品电影| 日韩av福利| 天堂av在线一区| 亚洲激情国产| 在线亚洲免费| 国产丝袜一区| 国产偷自视频区视频一区二区| 神马午夜久久| 蜜桃久久精品一区二区| 久久久国产精品网站| 欧美日韩1区| 日韩毛片网站| 日韩精品a在线观看91| 亚洲美女91| 欧美激情综合| 日韩欧美一区二区三区免费观看| 最新中文字幕在线播放| 高清av一区| 亚洲人成在线网站| 日韩中文av| 欧美亚洲tv| 午夜精品影院| 久久精品亚洲| 国模 一区 二区 三区| 午夜亚洲福利| 日日夜夜免费精品| 午夜av一区| 欧美啪啪一区| 精品欧美久久| 97久久亚洲| 中文字幕系列一区| 97欧美在线视频| 免费精品视频| 国产欧美日韩亚洲一区二区三区| 亚洲夜间福利| 国产精品久久久网站| 黄页网站一区| 欧美好骚综合网| 天堂av一区| 亚洲大全视频| 国产福利亚洲| 在线精品一区二区| 久久裸体视频| 麻豆成全视频免费观看在线看| 日韩**一区毛片| 国产精品美女| 久久精品青草| 一区二区精品伦理...| 国产日韩欧美三区| 中文字幕一区二区av| 免费观看不卡av| 四虎4545www国产精品 | 国产+成+人+亚洲欧洲在线| 麻豆亚洲精品| 激情综合自拍| 日韩一区亚洲二区| 国产精品mm| 欧美天堂一区| 中文字幕日本一区| 亚洲精华国产欧美| 欧美色图国产精品| 亚洲国产欧美日本视频| 欧美精品99| 久久成人高清| 国产麻豆精品久久| 亚洲精品乱码日韩|