进程间通信之ContentProvider+BroadCastReceiver
1. 将数据通过参数传递给ContentProvider组件。
2. ContentProvider调用CAE处理请求。
3. CAE将响应通过BroadCast传递给UI。
4. 在此之前UI须注册BroadCastReceiver。
String[] projection = null; String selection = null; String sortOrder = null; String[] selectionArgs = null;
selectionArgs = new String[3]; selectionArgs[0] = gateIP; selectionArgs[1] = userName; selectionArgs[2] = password; getContentResolver().query(Login.CONTENT_URI, projection, selection, selectionArgs, sortOrder);
CAEReceiver caeReceiver;
class CAEReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String msg = intent.getStringExtra("msg"); UHomeUtil.log("CAEReceiver.onReceive>>\n" + msg); if(gnmk == Gnmk.JDKZ) { Intent it = new Intent(); it.setClass(UHomeMain.this, JdkzAct.class); startActivity(it); } UHomeMain.this.unregisterReceiver(this); } }
public static final String ACTION_CAE = "android.intent.action.CAE_BROADCAST";
caeReceiver = new CAEReceiver(); IntentFilter filter = new IntentFilter(); filter.addAction(GConst.ACTION_CAE); registerReceiver(caeReceiver, filter);
public void sendCAEBroadCast(String msg) { Intent mIntent = new Intent(GConst.ACTION_CAE); mIntent.putExtra("msg", msg); this.getContext().sendBroadcast(mIntent); }