紧接上篇--
上篇在讲对于账户(Accounts)的操作,这次便是对上传任务(UploadTasks)的改动:
原来Seadroid是在一个BrowserActivity里,用TabFragment和UploadTasksFragment来切换FIies和UploadTasks。而现在要做的就是把UploadTasksFragment改成UploadTasksActivity。
这样不得不提及Activity和Fragment的生命周期问题,如图:
其中:
onAttach()
当Fragment已经跟Activity关联上的时候,这个回调被调用。Activity会作为onAttach()回调方法的参数来传递。
onCreateView()
创建跟Fragment关联的视图层时,调用这个回调方法。
onActivityCreated()
当Activity的onCreate()方法执行完之后,调用这个回调方法。
onDestroyView()
当跟Fragment关联的视图层正在被删除时,调用这个回调方法。
onDetach()
当从Activity中解除Fragment的关联时,调用这个回调方法。
所以简单来说就是把Fragment的步骤合并成Activity的步骤。具体该怎么合并,我觉得参照上图应该不是难事。
但是仅仅是合并了并不能解决问题。因为一些功能是写在BrowserActivity中的,要把它们给拉出来。因为Seadroid是基于网络层面的App,在程序运行开始就会在BrowserActivity中开启一个TransferService。这个service并不会随着BrowserActivity的Destory而消失,并且在退出App是服务也是开启的(为了其他功能的需要)。所以在UploadTasksActivity中也要接受TransferService发出的广播,所以便在UploadTasksActivity也加入了对TransferService的连接:
private ServiceConnection mConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName className, IBinder service) {
TransferBinder binder = (TransferBinder) service;
txService = binder.getService();
Log.d(DEBUG_TAG, "bind TransferService");
}
@Override
public void onServiceDisconnected(ComponentName arg0) {
txService = null;
}
};
具体改动比较多,在这里就不一一叙述,感兴趣的朋友可以跳转至我的 CSDNCODE