繁体   English   中英

如何在方法void中初始化最终变量布尔数组

how to initialize final variable boolean array in method void

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我的应用程序将检查播放保护设置是否已激活。

public static boolean checkGooglePlayProtectSettings(Context context){
    final boolean[] enabled = new boolean[]{false};
    try{
        SafetyNet.getClient(context).isVerifyAppsEnabled().addOnCompleteListener(new OnCompleteListener<SafetyNetApi.VerifyAppsUserResponse>() {

            @Override
                    public void onComplete(@NonNull Task<SafetyNetApi.VerifyAppsUserResponse> task) {
                        if(task.isSuccessful()){
                            SafetyNetApi.VerifyAppsUserResponse result = task.getResult();
                            if(result != null){
                                if(result.isVerifyAppsEnabled()){
                                    enabled[0] = true;
                                }else{
                                    enabled[0] = false;

                                }
                            }
                        }else{
                            Log.e("GoogleProtectPermission", "A general error occurred.");
                        }
                    }
                });
    }catch (Exception e){
        e.printStackTrace();
    }

    if (enabled[0]){
        Log.d("GoogleProtectPermission", "Is enabled");
    }else {
        Log.d("GoogleProtectPermission", "Is disabled");
    }
    return false;
}

在这种情况下,我尝试将最终结果记录下来,但在日志结果中始终不活跃,如何获得良好的结果来检查播放保护是否处于活动状态?

2 个回复

isVerifyAppsEnabled()方法是异步的,它调用OnCompleteListeneronComplete方法来通知结果何时准备就绪。

该块很可能在OnCompleteListener被触发之前执行,因此enabled[0]值此时保持不变。

if (enabled[0]) {
    Log.d("GoogleProtectPermission", "Is enabled");
} else {
    Log.d("GoogleProtectPermission", "Is disabled");
}

由于没有同步方法来获取结果,您可能必须以某种方式更改您的方法以考虑这种异步性并在回调结果准备好时执行相关操作或执行阻塞等待直到isVerifyAppsEnabled返回的Task完成。

另外,不管这个问题,在您当前的代码中,使用布尔数组而不仅仅是一个布尔值似乎没有什么意义,而这个

if(result.isVerifyAppsEnabled()) {
    enabled[0] = true;
} else {
    enabled[0] = false;
}

可以简化为这个enabled[0] = result.isVerifyAppsEnabled()

你可以这样做:

final StringBuilder sb = new StringBuilder();
...
if(result.isVerifyAppsEnabled()){
    sb.append("good");
}else{
    sb.append("bad");
}
...
if(sb.toString().equals("good")){
    Log.d("GoogleProtectPermission", "Is enabled");
}
if(sb.toString().equals("bad")){
    Log.d("GoogleProtectPermission", "Is disabled");
}

编辑:是的,作为评论点,我的回答是错误的。 所以有两种方法:

1 直接输出日志信息

   if(result.isVerifyAppsEnabled()){
       Log.d("GoogleProtectPermission", "Is enabled");
    }else{
        Log.d("GoogleProtectPermission", "Is disabled");
    }

2 使用接口回调

   public interface Callback {  //add an interface 
        void onResponse(String message);
    }

    final StringBuilder sb = new StringBuilder();
    ...
    if(result.isVerifyAppsEnabled()){
        sb.append("good");
    }else{
        sb.append("bad");
    }
    callback.onResponse(sb.toString()); //add this line

并在某个地方订阅该接口。

1 如何初始化最终对象数组

例如,我正在尝试在类(MainActivity)中添加对象数组 我俩都还好。 但是我不知道如何初始化aList1或aList2。 已经尝试过以下操作: 并且还尝试了: 但是eclipse抱怨: No enclosing instance of type MainA ...

2 在另一个方法中在构造函数中初始化最终变量

我有一个问题并不是那么大,但仍然让我思考如何使用Java构造函数和方法。 我有一个代表我声明最终的半径的常量,并且还公开供所有人查看。 当我永远不会改变半径时,我不希望我的代码充斥着getRadius()方法。 我想在构造函数中初始化常量,因为我想在分配半径之前应用某些条件,必须满 ...

3 在方法中声明的最终静态布尔变量

我有一个摄像头许可按钮,在按钮上单击侦听器,我有以下两个主要条件。 1:如果仅授予许可就直接进入摄像机活动... 2:否则检查2个其他条件(1:i检查(使用布尔变量)是否在对话框中选中了“不再询问许可”,然后转到设置.... 2:其他请求权限)。 并在onRequestPermissio ...

5 如何在javascript中初始化一个布尔数组

我正在学习 javascript,我想在 javascript 中初始化一个布尔数组。 我尝试这样做: 但它不起作用。 谷歌搜索后,我只找到了这种方式: 但是我发现这是一个非常困难的方法来初始化一个数组。 有人知道另一种方法吗? ...

6 如何通过Spring @PostConstruct初始化最终变量?

我必须初始化一些最终变量,但这些值需要由Spring Properties读取 我想初始化“ maxTopic”的变量,但值在“属性”中,所以我不能在构造中进行此操作,我该怎么做?我只知道删除“ final”的键。 最后,我通过这种方式做到这一点: 谁能用更好的方法解决它? ...

7 Java方法返回初始化变量,而不是变量的最终值。

好吧,我是Java的新手,我正在制定一种方法,其目的是返回学生的平均成绩,但不是返回最终值,而是获取返回该方法的变量的初始值。 这是方法: 非常感谢您的帮助,祝您有愉快的一天。 :D ...

2017-04-13 16:56:39 1 30   java
9 初始化静态最终变量

我想知道,有什么不同,在各种方法初始化静态最终变量? 要么 这两者有什么不同吗? ...

2010-07-02 12:59:08 6 643   java
10 在 Dart 中使用“this”初始化最终变量

我有一个这样的课程: 但是我在this句话上犯了一个错误: 对“this”表达式的引用无效。 我相信我当时无法访问this ,可能是因为对象引用尚未准备好。 所以我尝试了其他形式的初始化该变量,例如: 但我得到了同样的错误。 唯一有效的是: 这需要我删除final变量声明, ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM