Android广播和接口交互回调消息处理

来源:互联网 发布:国家医师资格数据库 编辑:程序博客网 时间:2024/05/23 12:21
/**
 * 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);



0 0
原创粉丝点击