androidmodule通信、運行結果
2021-09-12 13:52:51.986 2568-2568/com.jlink.demob D/wangrui: 通信管道正在綁定
2021-09-12 13:53:11.969 2568-2568/com.jlink.demob D/wangrui: 接收到客戶端消息
2021-09-12 13:53:11.970 2568-2568/com.jlink.demob D/wangrui: 名字:王睿 年齡21
MainActivity.java
public class MainActivity extends AppCompatActivity {private Button btnIPC;private Button btnSend;private Messenger messengerProxy;private Handler handler = new Handler(Looper.getMainLooper()){@Overridepublic void handleMessage(@NonNull Message msg) {super.handleMessage(msg);Bundle bundle = msg.getData();bundle.setClassLoader(MyBean.class.getClassLoader());MyBean myBean = bundle.getParcelable("message");handler.postDelayed(new Runnable() {@Overridepublic void run() {Toast.makeText(MainActivity.this,myBean.getName(),Toast.LENGTH_SHORT).show();}},3000);}};private Messenger clientMessenger = new Messenger(handler);private ServiceConnection mServiceConnection = new ServiceConnection() {@Overridepublic void onServiceConnected(ComponentName name, IBinder binder) {messengerProxy = new Messenger(binder);Toast.makeText(MainActivity.this,"連接成功",Toast.LENGTH_SHORT).show();}@Overridepublic void onServiceDisconnected(ComponentName name) {android.util.Log.d("wangrui","斷開連接!");}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);btnIPC = findViewById(R.id.btn_ipc);btnIPC.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intentService = new Intent();intentService.setAction("com.jlink.demob.MyService");intentService.setPackage("com.jlink.demob");intentService.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);MainActivity.this.bindService(intentService, mServiceConnection, BIND_AUTO_CREATE);}});btnSend = findViewById(R.id.btn_send);btnSend.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {
// MyBean myBean = new MyBean();
// myBean.setName("王睿對皮卡丘使用了精靈球");try {Message message = new Message();
// message.replyTo = clientMessenger;Bundle bundle = new Bundle();bundle.putString("name", "王睿");bundle.putString("age","21");
// bundle.putParcelable("message",myBean);message.setData(bundle);messengerProxy.send(message);} catch (RemoteException e) {e.printStackTrace();}}});}
}
MyService.java
/*** author : WangRui*/
public class MyService extends Service {private Handler handler = new Handler(Looper.getMainLooper());private Messenger messenger = new Messenger(handler);@Nullable@Overridepublic IBinder onBind(Intent intent) {android.util.Log.d("wangrui","通信管道正在綁定");return messenger.getBinder();}
}
h5與Android通信框架匯總。AndroidManifest.xml
<serviceandroid:name=".MyService"android:process=":remote"><intent-filter><category android:name="android.intent.category.DEFAULT"/><action android:name="com.jlink.demoa.MyService"/></intent-filter></service>
MainActivity.java
public class MainActivity extends AppCompatActivity {private ServiceConnection mServiceConnection = new ServiceConnection() {@Overridepublic void onServiceConnected(ComponentName name, IBinder binder) {}@Overridepublic void onServiceDisconnected(ComponentName name) {}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Intent intentService = new Intent();intentService.setAction("com.jlink.demob.MyService");intentService.setPackage("com.jlink.demob");intentService.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);MainActivity.this.bindService(intentService, mServiceConnection, BIND_AUTO_CREATE);}
MyService.java
/*** author : WangRui*/
public class MyService extends Service {private Handler handler = new Handler(Looper.getMainLooper()){@Overridepublic void handleMessage(@NonNull Message msg) {super.handleMessage(msg);android.util.Log.d("wangrui","接收到客戶端消息");// 客戶端→服務端Bundle bundle = msg.getData();android.util.Log.d("wangrui","名字:" + bundle.getString("name")+"\n\n"+"年齡:" + bundle.getString("age"));
// bundle.setClassLoader(MyBean.class.getClassLoader());
// MyBean myBean = bundle.getParcelable("message");
// Toast.makeText(MyService.this,myBean.getName(),Toast.LENGTH_SHORT).show();// //服務端→客戶端
// try {
// Messenger clientMessenger = msg.replyTo;
// myBean = new MyBean();
// myBean.setName("皮卡丘對王睿使用了十萬伏特");
// bundle = new Bundle();
// bundle.putParcelable("message",myBean);
// Message message = new Message();
// message.setData(bundle);
// message.replyTo = clientMessenger;
// clientMessenger.send(message);
// } catch (RemoteException e) {
// e.printStackTrace();
// }}};private Messenger messenger = new Messenger(handler);@Nullable@Overridepublic IBinder onBind(Intent intent) {android.util.Log.d("wangrui","通信管道正在綁定");return messenger.getBinder();}
}
Android客戶端?AndroidManifest.xml
<serviceandroid:name=".MyService"android:process=":remote"><intent-filter><category android:name="android.intent.category.DEFAULT"/><action android:name="com.jlink.demob.MyService"/></intent-filter></service>
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态