Android测试开关文档

测试开关文档

为方遍后续全局性开关设置和测试方便,统一测试开关开发。

测试开关说明

通过一个开关列表,整合所有测试开关。(特别重要的开关不建议这么做

  1. 随便在一个页面中通过onCreateOptionsMenu设置菜单中添加右上角透明测试菜单
  • 先设置测试点击数组
//利用数组来存储时间,通过修改数组长度来修改点击次数,测试服为3次,正式服为4次
long[] mTestHits;
void onCreate(Bundle savedInstanceState) {
// 后续SettingActivity如果改写成kotlin,可以传入次数函数代替判断
if(Tools.isApkDebugable(context)){
    mTestHits = new long[3];
}else{
    mTestHits = new long[4];
}
}
  • 设置右上角透明菜单
MenuItem test = menu.findItem(R.id.action_test);
test.setActionView(R.layout.action_setting_test_item);
test.getActionView().setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
      System.arraycopy(mTestHits, 1, mTestHits, 0, mTestHits.length - 1);
        //获取离开机的时间
        mTestHits[mTestHits.length - 1] = SystemClock.uptimeMillis();
        //单击时间的间隔,以500毫秒为临界值
        if (mTestHits[0] >= (SystemClock.uptimeMillis() - 500)) {
            //一个三击(双击或多击事件完成)
            TestDialogUtils.showTestDialog(context);
            //把数组置为空并重写初始化,为下一次三击(双击或多击)做准备
            mTestHits = null;
            if(Tools.isApkDebugable(context)){
                mTestHits = new long[3];
            }else{
                mTestHits = new long[4];
            }
        }
    }
});
  1. TestDialogUtilsshowTestDialog()添加开关项
    // 将正式服和测试服的不同开关放在数组最后,弹框点击item不用再调整
    private val arrayDebug = arrayOf("手机信息", "探针提示开关","切换正式服测试服URL")
    private val arrayRelease = arrayOf("手机信息", "探针提示开关")
    private lateinit var arrayTest: Array<String>
    /**
     * 测试弹框
     *
     * @param context 上下文
     */
    @JvmStatic
    fun showTestDialog(context: Context?) {
        arrayTest = if (BuildConfig.DEBUG) {
            arrayDebug
        } else {
            arrayRelease
        }
        val builder = AlertDialog.Builder(context)
        builder.setSingleChoiceItems(arrayTest, 0) { dialog, which ->
            when (which) {
                0 ->EdToast.showToast(deviceInfoString, -1, 10000)
                1 -> if (FxConfig.isEventTest) {
                    FxConfig.isEventTest = false
                    TestSharePreference.setEventTestToastSwitch(false)
                    Toast.makeText(VideoEditorApplication.getInstance(), "关闭探针提示", Toast.LENGTH_SHORT).show()
                } else {
                    FxConfig.isEventTest = true
                    TestSharePreference.setEventTestToastSwitch(true)
                    Toast.makeText(VideoEditorApplication.getInstance(), "打开探针提示", Toast.LENGTH_SHORT).show()
                }
                2 -> {
                    ConfigServer.isConnRelUrl = !ConfigServer.isConnRelUrl
                    TestSharePreference.setConnectReleaseUrl(ConfigServer.isConnRelUrl)
                    Toast.makeText(VideoEditorApplication.getInstance(), if (ConfigServer.isConnRelUrl) "Release URL Open!" else "Release URL Close!", Toast.LENGTH_SHORT).show()
                }
                
            }
        }.setNegativeButton("关闭") { dialog, which -> dialog.dismiss() }.setTitle("测试列表").setCancelable(false).create().show(
  1. 需要本地化的开关(需要重新打开应用依然保持开关状态),可以通过 TestSharePreference来保存开关状态
/**
 * 设置探针Toast提示开关
 */
public static void setEventTestToastSwitch(Boolean isOpen) {
    SharedPreferences.Editor editor = VideoEditorApplication.getInstance().getSharedPreferences(USER_TEST,
            Context.MODE_PRIVATE).edit();
    editor.putBoolean(EVENT_TEST, isOpen);
    editor.apply();
}

并在VideoEditorApplication中通过初始化测试配置来把本地化探针配置设置到全局开关上

/**
 * 初始化测试配置
 */
private void initTestConfig() {
    FxConfig.isEventTest = TestSharePreference.getEventTestToastSwitch();
}

特殊情况,如遇到崩溃,需要在崩溃重启位置将本地化测试配置重新赋值给全局开关

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值