Android 多进程编程 15问15答!
2016-01-29 14:12
417 查看
ps:阅读本文 需要对android 多进程编程有一定了解。
1.Android中总共有几种方式进行IPC?
答:一共有两种,一种是binder 还有一种是socket。Binder 大家用的比较多。Socket很少有人用,这里给出一个利用Socket进行ipc通信的例子。
服务端代码:
View Code
1.Android中总共有几种方式进行IPC?
答:一共有两种,一种是binder 还有一种是socket。Binder 大家用的比较多。Socket很少有人用,这里给出一个利用Socket进行ipc通信的例子。
服务端代码:
package com.example.administrator.bindermanager; import android.os.Bundle; import android.os.RemoteException; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.View; import android.view.Menu; import android.view.MenuItem; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import org.w3c.dom.Text; public class MainActivity extends AppCompatActivity { private Button bt, bt2, bt3; private EditText et1, et2; private TextView tv; private BinderManger binderManger; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv = (TextView) findViewById(R.id.tv2); et1 = (EditText) findViewById(R.id.et); et2 = (EditText) findViewById(R.id.et2); bt = (Button) this.findViewById(R.id.bt); bt.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { binderManger = BinderManger.getInstance(MainActivity.this); } }); bt2 = (Button) this.findViewById(R.id.bt2); bt2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { try { final IMultiplication multiplicationImpl = (IMultiplication) MultiplicationImpl.asInterface(binderManger.queryBinder(BinderManger.BINDER_MULTIPLICATION)); runOnUiThread(new Runnable() { @Override public void run() { try { tv.setText(multiplicationImpl.multip(Integer.parseInt(et1.getText().toString()), Integer.parseInt(et2.getText().toString())) + ""); } catch (RemoteException e) { e.printStackTrace(); } } }); } catch (RemoteException e) { e.printStackTrace(); } } }); bt3 = (Button) this.findViewById(R.id.bt3); bt3.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { try { final IAddition additionImpl = (IAddition) AdditionImpl.asInterface(binderManger.queryBinder(BinderManger.BINDER_ADDITION)); runOnUiThread(new Runnable() { @Override public void run() { try { tv.setText(additionImpl.add(Integer.parseInt(et1.getText().toString()), Integer.parseInt(et2.getText().toString())) + ""); } catch (RemoteException e) { e.printStackTrace(); } } }); } catch (RemoteException e) { e.printStackTrace(); } } }); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }
View Code
相关文章推荐
- android 学习 碎片总结
- Android签名机制之---签名过程详解
- Android签名机制之---签名验证过程详解
- Android悬浮按钮的两种实现方法(Floating action button)
- AndroidStudio 设置自动导包
- Listview indexOutOfBoundsException: Invalid index 1, size is 1
- Android NDK生成so文件
- Android手机实时视频监控
- android Universal-Image-Loader oom:关于bitmap的优化及其他优化
- Android实现入门界面布局
- Android Activity活动生命周期
- Android string.xml error: Apostrophe not preceded by \
- Android, ListView IllegalStateException: “The content of the adapter has changed but ListView did no
- 拥抱 Android Studio 之四:Maven 仓库使用与私有仓库搭建
- 在MPAndroidChart库K线图的基础上画均线
- 在MPAndroidChart库K线图的基础上画均线
- Android Studio打包生成APK
- Android从服务器下载文件
- android mvp快速开发框架介绍(自动生成android代码工具介绍)
- 拥抱 Android Studio 之四:Maven 仓库使用与私有仓库搭建