Android广播和接口交互回调消息处理
* Upload 文件上传广播接收器
*
* @author jiangbing
* @time 2015-7-14 上午11:49:29
*/
public class FileUploadReceiver extends BroadcastReceiver {
private static final String TAG = "FileUploadReceiver";
private static final String registerName = "com.http.server.web.action.broadcast";
private static Map<Context, FileUploadReceiver> mReceiverMap = new HashMap<Context, FileUploadReceiver>();
OnFileUploadListener mFileUploadListener;
public FileUploadReceiver(OnFileUploadListener fileUploadListener) {
this.mFileUploadListener = fileUploadListener;
}
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(registerName)) {
String fileName = intent.getStringExtra("fileName");
mFileUploadListener.fileUpload(fileName);
// 在控制台显示接收到的广播内容
System.out.println("author==>" + fileName);
// 在android端显示接收到的广播内容
Toast.makeText(context, fileName, Toast.LENGTH_SHORT).show();
}
}
/**
* 文件上传注册广播
*
* @param context
* @param fileUploadListener
* @author jiangbing
* @time 2015-7-14 下午12:12:12
*/
public static void register(Context context, OnFileUploadListener fileUploadListener) {
if (mReceiverMap.containsKey(context)) {
return;
}
FileUploadReceiver receiver = new FileUploadReceiver(fileUploadListener);
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(registerName);
context.registerReceiver(receiver, intentFilter);
mReceiverMap.put(context, receiver);
}
/**
* 注销文件上传广播
*
* @param context
* @author jiangbing
* @time 2015-7-14 下午12:13:37
*/
public static void unregister(Context context) {
FileUploadReceiver receiver = mReceiverMap.remove(context);
if (receiver != null) {
context.unregisterReceiver(receiver);
receiver = null;
}
}
}
/-----------回调接口文件--------------/
/**文件上传接口 回调接收文件名称
* @author jiangbing
* @time 2015-7-14 上午11:50:49
*/
public interface OnFileUploadListener {
void fileUpload(String fileName);
}
/----主界面Activity 类实现接口-------/
public class MainActivity extends Activity implements OnFileUploadListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//注册广播
FileUploadReceiver.register(this, this);
}
/**
* 接收pc上传数据到服务文件
*/
@Override
public void fileUpload(String fileName) {
if (!TextUtils.isEmpty(fileName)) {
fileList.add(fileName);
transmissionAdapter.updateUploadFileData(fileList);
updateSdCardProgress();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
//在Activity销毁时候注销广播消息
FileUploadReceiver.unregister(getApplicationContext());
}
}
/-----------发送广播-----------/
//发送 一个无序广播
Intent intent = new Intent();
intent.setAction("com.http.server.web.action.broadcast");
//要发送的内容
intent.putExtra("fileName", fileName );
mContext.sendBroadcast(intent);
版权声明:本文为博主原创文章,未经博主允许不得转载。