状态模式与android状态机

本文探讨了如何在Android应用中利用状态模式处理复杂的上传文件流程,包括状态模式的一般介绍、Android状态机(StateMachine)的实现原理以及在实际项目中遇到的并发限制问题,并分享了解决方案和对未来优化的思考。
摘要由CSDN通过智能技术生成

最近项目中需要上传文件,各种上传异常、重传、断点续传状态很多很复杂,决定使用状态模式,所以研究一下状态模式。

一、状态模式介绍

1. 一般性UML图

 

2. 简单例子

以上传文件为例学习一下状态模式

给IState设置3个接口,分别是请求上传、上传、上传完成;定义三个状态实现IState接口,每个状态都需要实现这三个接口,如下:

 

定义Uploader类作为Context,在Uploader中定义三个状态,分别问空闲状态、排队状态、上传状态。


代码:

public class Uploader implements IState {

	private IState mIdleState;
	private IState mQueuingState;
	private IState mUploadingState;
	
	private IState mState;
	
	public Uploader() {
		mIdleState = new IdleState(this);
		mQueuingState = new QueuingState(this);
		mUploadingState = new UploadingState(this);
	}
	public void start() {
		setState(mIdleState);
		request();
	}
	@Override
	public void request() {
		mState.request();
	}
	@Override
	public void upload() {
		mState.upload();
	}
	@Override
	public void finished() {
		mState.finished();
	}
	public IState getState() {
		return mState;
	}
	public void setState(IState state) {
		mState = state;
	}
	public IState getIdleState() {
		return mIdleState;
	}
	public IState getQueuingState() {
		return mQueuingState;
	}
	public IState getUploadingState() {
		return mUploadingState;
	}
}

public interface IState {
	public static final String TAG = "State";
	void request();
	void upload();
	void fini
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值