太原软件测试培训
达内太原软件测试培训中心

0351-5618167

热门课程

AyoActivityNoManifest —— Activity 代理框架

  • 时间:2016-08-16 14:08
  • 发布:开源中国
  • 来源:开源中国

AyoActivityNoManifest —— Activity 代理框架

软件测试工作是一项十分重要的工作,对于测试来说,要求是严格的。太原软件测试培训机构分享一个框架知识。

1、这是什么?

这个库提供了:

一个轻量级的Activity代理框架(ActivityAttacher,使用方式基本和Activity一样),目的在于不必在Manifest反复声明Activity

同时提供了一个轻量级的Bundle机制(SimpleBundle,使用方式基本和Bundle一样),目的在于在Activity之间传递参数时考虑序列化问题,适用于进程内通信

提供了一个轻量级的OnActivityResult机制(OnResultCallback,使用方式基本和OnActivity不一样)

状态栏一体化的简单封装

ActivityFragment状态保存的问题

其他ActivityFragment问题的解决方案,后期一个一个加

2 ActivityAttacher的使用

(1) manifest

manifest里只需要声明:

Activity

有特殊需求的Activity,如支持旋转

模板Activity,暂时只支持一个启动模式对应一个模板Activity

模板Activity有几个默认配置项,如果需要更改,也需要声明自己的Activity

Manifest中的声明: <ACTIVITY< p>

android:name="com.cowthan.sample.MainActivity"

android:configChanges="orientation|screenSize|keyboardHidden|navigation"

android:screenOrientation="portrait"

android:theme="@style/AppTheme"

> <ACTIVITY< p>

android:name="org.ayo.app.base.TmplActivityStandard"

android:configChanges="orientation|screenSize|keyboardHidden|navigation"

android:screenOrientation="portrait"

android:launchMode="standard"

android:theme="@style/AyoTransparentTheme" /> <ACTIVITY< p>

android:name="org.ayo.app.base.TmplActivitySingleTask"

android:configChanges="orientation|screenSize|keyboardHidden|navigation"

android:screenOrientation="portrait"

android:launchMode="singleTask"

android:theme="@style/AyoTransparentTheme" /> <ACTIVITY< p>

android:name="org.ayo.app.base.TmplActivitySingleTop"

android:configChanges="orientation|screenSize|keyboardHidden|navigation"

android:screenOrientation="portrait"

android:launchMode="singleTop"

android:theme="@style/AyoTransparentTheme" /> <ACTIVITY< p>

android:name="org.ayo.app.base.TmplActivitySingleInstance"

android:configChanges="orientation|screenSize|keyboardHidden|navigation"

android:screenOrientation="portrait"

android:launchMode="singleInstance"

android:theme="@style/AyoTransparentTheme" />

(2) ActivityAttacher

ActivityAttacher的意义:

ActivityAttacher就是附着在上面4个模板Activity里的Activity代理

ActivityAttacher中持有一个Activity实例对象,是在onCreate时赋值的

ActivityAttacher可以处理Activity中的所有配置和生命周期

ActivityAttacher提供的接口,原则上应该完全仿Activity,这一点类似v7源码中的和AppCompactActivity相关的一个delegate类,但不知道这个类是干什么用的

(3) 定义Activity

看代码,这两个只有基类不一样,内部代码应该是一样的,其中继承AyoActivity的是一个普通Activity,需要去manifest声明, 而继承AyoActivityAttacher,就不需要再去manifest声明了

public class SampleActivity extends AyoActivityAttacher{

public static void start(Context c, boolean takeSystemBar, int lanuchMode, OnResultCallBack callBack){

SimpleBundle sb = new SimpleBundle();

sb.putExtra("takeSystemBar", takeSystemBar);

ActivityAttacher.startActivity(c, SampleActivity.class, sb, false, lanuchMode, callBack);

}

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.ac_tmpl);

}

}

public class SampleActivity extends AyoActivity{

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.ac_tmpl);

}

}

(4) 启动ActivityAttacher

启动方式变成这样:

public static void start(Context c, boolean takeSystemBar, int lanuchMode, OnResultCallBack callBack){

SimpleBundle sb = new SimpleBundle();

sb.putExtra("takeSystemBar", takeSystemBar);

ActivityAttacher.startActivity(c, SampleActivity.class, sb, false, lanuchMode, callBack);

}

SimpleBundle:功能类似于intent或者bundle,存的是传到下一个Activity的参数

取出参数: boolean takeSystemBar = getIntent().getBooleanExtra("takeSystemBar");

这里,在Activity之间传的都是引用,不再需要考虑序列化问题,当然只适用于app单进程内

OnResultCallBack是接收Activity的回传结果

如何回传: getResultCallback().onResult("代替OnActivityResltsetResult"); finish();

lanuchMode是选择Activity的启动模式,也就是选择模板:

ActivityAttacher.LAUNCH_MODE_STANDARD

ActivityAttacher.LAUNCH_MODE_SINGLE_TASK

ActivityAttacher.LAUNCH_MODE_SINGLE_TOP

ActivityAttacher.LAUNCH_MODE_SINGLE_INSTANCE

(5) Activity主题

这里提供了两个主题:AyoTransparentThemeAyoTheme,没啥特殊的

好了,今天就给大家讲这么多吧,喜欢我的内容可以关注或者分享(微信公众平台:tytedu)选择太原达内培训,不再孤军奋战,轻轻松松做IT高薪白领。太原达内培训带领有明确目标的学子迈向成功之路!

预约申请免费试听课程

怕钱不够?就业挣钱后再付学费!     怕学不会?0基础入学,达内定制课程!     担心就业?近12万家雇主企业,推荐名企就业!

上一篇:在 MVP 中进行单元测试
下一篇:架构师俱乐部:SDN与云网络安全

华为正在测试基于Android P开发的EMUI8.2系统

太原软件测试培训--对话Pauly Comtois:赫斯特商业媒体中的企业DevOps采用

太原软件测试培训--在选择数据库的路上,我们遇到过哪些坑?

jquery动画之queue和dequeue

选择城市和中心
贵州省

广西省

海南省