Android Messenger IPC 通信
16lz
2021-01-23
服务端通知客户端
客户端:
MainActivity.java
protected void onStart() { super.onStart(); // Start service and provide it a way to communicate with this class. Intent startServiceIntent = new Intent(this, MyJobService.class); Messenger messengerIncoming = new Messenger(mHandler); startServiceIntent.putExtra(MESSENGER_INTENT_KEY, messengerIncoming); startService(startServiceIntent);}
服务端
MyJobService.java
@Overridepublic int onStartCommand(Intent intent, int flags, int startId) { mActivityMessenger = intent.getParcelableExtra(MESSENGER_INTENT_KEY); return START_NOT_STICKY;}
long duration = params.getExtras().getLong(WORK_DURATION_KEY);// Uses a handler to delay the execution of jobFinished().Handler handler = new Handler();handler.postDelayed(new Runnable() { @Override public void run() { sendMessage(MSG_COLOR_STOP, params.getJobId()); jobFinished(params, false); }}, duration);Log.i(TAG,
private void sendMessage(int messageID, @Nullable Object params) { // If this service is launched by the JobScheduler, there's no callback Messenger. It // only exists when the MainActivity calls startService() with the callback in the Intent. if (mActivityMessenger == null) { Log.d(TAG, "Service is bound, not started. There's no callback to send a message to."); return; } Message m = Message.obtain(); m.what = messageID; m.obj = params; try { mActivityMessenger.send(m); } catch (RemoteException e) { Log.e(TAG, "Error passing service object back to activity."); }}
更多相关文章
- Android FTP客户端使用,快速上传文件
- Android客户端向服务器端发送数据的流程(1)
- RTC搭建android下三层应用程序访问服务器MsSql-客户端
- Android仿人人客户端
- 转:RTC搭建android下三层应用程序访问服务器MsSql-客户端
- 用CSS3生成的一个漂亮的android客户端页面
- Android之从网络中获取数据并返回客户端的两种方式:XML格式返回
- java android客户端SSL通信 遇到的几个报错及处理