小编FRR*_*FRR的帖子

智能转换为'类型'是不可能的,因为'变量'是一个可变属性,此时可能已被更改

Kotlin新手问道,"为什么下面的代码不能编译?":

    var left: Node? = null

    fun show() {
         if (left != null) {
             queue.add(left) // ERROR HERE
         }
    }
Run Code Online (Sandbox Code Playgroud)

智能转换为'Node'是不可能的,因为'left'是一个可变属性,此时可能已被更改

我得到的left是可变变量,但是我明确地检查left != null并且left是类型的Node,为什么它不能被智能化到那种类型?

我怎样才能优雅地解决这个问题?:)

kotlin

225
推荐指数
5
解决办法
6万
查看次数

如何修复错误:laravel.log无法打开?

我在laravel很新,事实上我正在努力创建我的第一个项目.由于某种原因,我一直收到这个错误(我还没有开始编码)

Error in exception handler: The stream or file "/var/www/laravel/app/storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied in /var/www/laravel/bootstrap/compiled.php:8423
Run Code Online (Sandbox Code Playgroud)

我读过这与权限有关,但chmod -R 775 storage根本没有帮助.

权限

php laravel

135
推荐指数
16
解决办法
25万
查看次数

在Kotlin中IntArray与Array <Int>

我不确定an IntArray和an 之间的区别在于Array<Int>Kotlin以及为什么我不能互换使用它们:

missmatch

我知道IntArray转换为int[]定位时JVM,但Array<Int>转换为什么?

此外,你也可以拥有String[]YourObject[].为什么Kotlin具有类型的类{primitive}Array,几乎任何东西都可以排列成数组,而不仅仅是基元.

kotlin

54
推荐指数
2
解决办法
1万
查看次数

泄漏金丝雀,Recyclerview泄漏mAdapter

我决定现在是时候学习如何使用Leak Canary来检测我的应用程序中的泄漏,并且像往常一样,我尝试在我的项目中实现它以真正理解如何使用该工具.实现它很容易,困难的部分是阅读工具向我扔回来的东西.我有一个滚动视图似乎在内存管理器中累积内存,因为我向上和向下滚动(即使它没有加载任何新数据)所以我认为这是一个很好的候选对象来跟踪泄漏,这是结果:

在此输入图像描述

它看起来像v7.widget.RecyclerView泄漏适配器,而不是我的应用程序.但那不可能是对的......对吗?

这是适配器的代码和使用它的类:https: //gist.github.com/feresr/a53c7b68145d6414c40ec70b3b842f1e

我开始对这个问题表示赏心悦目,因为它在两年后完全不同的应用程序上重新出现了

android memory-leaks leakcanary

29
推荐指数
3
解决办法
8906
查看次数

Jetpack compose:如何检测导致 Composable 重组的原因

我开始注意到我的应用程序中出现了一些卡顿,我相信原因是可组合项在不应该的情况下被重新组合。

我检测到一些用户交互触发了不必要的重新组合,但我无法确定是什么导致了重新组合。我在修改状态的每个地方都添加了断点,并且仍然可以找到触发重组的内容。

AS有提供调试这种事情的方法吗?

android android-jetpack android-jetpack-compose

21
推荐指数
1
解决办法
4525
查看次数

RxJava Relay vs Subjects

我试图通过Jake Warthon了解这个库的目的:https: //github.com/JakeWharton/RxRelay

基本上:除了无法调用onComplete或onError之外的主题.主体以有害的方式处于有状态:当它们收到onComplete或onError时,它们不再可用于移动数据.

我知道,这是一个有效的用例,但上面似乎很容易实现只使用现有的主题.

1.不要向主题转发errors/ completions事件:

`observable.subscribe({ subject.onNext(it) }, { log error / throw exception },{ ... })`
Run Code Online (Sandbox Code Playgroud)

2.不要暴露主题,使你的方法签名返回一个可观察的.

fun(): Observable<> { return subject }

我显然在这里遗漏了一些东西,我很好奇它是什么!

class MyPublishRelay<I> : Consumer<I> {

    private val subject: Subject<I> = PublishSubject.create<I>()

    override fun accept(intent: I) = subject.onNext(intent)

    fun subscribe(): Disposable = subject.subscribe()
    fun subscribe(c: Consumer<in I>): Disposable = subject.subscribe(c)
    //.. OTHER SUBSCRIBE OVERLOADS
}
Run Code Online (Sandbox Code Playgroud)

rx-java2

15
推荐指数
1
解决办法
3840
查看次数

Android Retrofit | 发布自定义对象(将json发送到服务器)

我想知道如何使用改造将自定义对象发送到我的API,如下所示:

@POST(URL_ORDERS)
public void newOrder(Order order, Callback<Boolean> success);
Run Code Online (Sandbox Code Playgroud)

这是我在服务器上解析它的方法

public function store()
    {
    if(Auth::check()){
        $order = Input::get();
        $table = $order->table;
        $items = $order->items;

        if(!$table->taken){
            $table->taken = true;

            $order->push();
            $table->push();

            return true;
        }
    }

    return false;
}
Run Code Online (Sandbox Code Playgroud)

出于某种原因,我得到了

06-04 20:45:59.275    6085-6306/com.tesis.restapp.restapp W/dalvikvm? threadid=11: thread exiting with uncaught exception (group=0x40aae210)
06-04 20:45:59.285    6085-6306/com.tesis.restapp.restapp E/AndroidRuntime? FATAL EXCEPTION: Retrofit-Idle
    java.lang.IllegalArgumentException: RestAppApiInterface.newOrder: No Retrofit annotation found. (parameter #1)
            at retrofit.RestMethodInfo.methodError(RestMethodInfo.java:120)
            at retrofit.RestMethodInfo.parameterError(RestMethodInfo.java:124)
            at retrofit.RestMethodInfo.parseParameters(RestMethodInfo.java:443)
            at retrofit.RestMethodInfo.init(RestMethodInfo.java:131)
Run Code Online (Sandbox Code Playgroud)

我想我想做的是以某种方式将我的对象转换为json并将其发送到我的服务器.我是以正确的方式接近这个吗?

post android json laravel

14
推荐指数
1
解决办法
2万
查看次数

RxJava,一个可观察的多个订阅者:publish().autoConnect()

我正在玩rxJava/rxAndroid,并且有一些非常基本的东西不像我期望的那样.我有一个可观察的和两个订阅者:

Observable<Integer> dataStream = Observable.just(1, 2, 3).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread());

Log.d(TAG, "subscribing sub1...");
dataStream.subscribe(v -> System.out.println("Subscriber #1: "+ integer));

Log.d(TAG, "subscribing sub2...");
dataStream.subscribe(v -> System.out.println("Subscriber #2: "+ integer));
Run Code Online (Sandbox Code Playgroud)

这是输出:

D/RxJava: subscribing sub1...
D/RxJava: subscribing sub2...
D/RxJava: Subscriber #1: 1
D/RxJava: Subscriber #1: 2
D/RxJava: Subscriber #1: 3
D/RxJava: Subscriber #2: 1
D/RxJava: Subscriber #2: 2
D/RxJava: Subscriber #2: 3
Run Code Online (Sandbox Code Playgroud)

现在,我知道我可以通过使用避免重复计数,publish().autoConnect()但我试图首先理解这种默认行为.每当有人订阅observable时,它就会开始发出数字序列.我明白了.因此,当Subscriber 1连接时它开始发射物品.Subscriber 2马上连接,为什么不能获得价值呢?

这是我理解它的方式,从可观察的角度来看:

  1. 有人订阅了我,我应该开始发出物品
    [订阅者:1] [项目到EMIT:1,2,3]

  2. 向订户发出项目"1"
    [订阅者:1] [项目到EMIT:2,3]

  3. 有人订阅了我,当我完成后我将再次发出1,2,3
    [订阅者:1&2] [项目到EMIT:2,3,1,2,3]

  4. 向订户发出项目'2'
    [订阅者:1&2] [项目到EMIT:3,1,2,3]

  5. 向订户发出项目'3'
    [订阅者:1&2] …

reactive-programming rx-java

14
推荐指数
2
解决办法
1万
查看次数

改造不断伪造我的饼干:( Android

因此,当我登录到我的服务器端应用程序时,它给了我一个cookie,允许我在未来的请求中说"嘿,这是我".我曾经使用Android的默认HttpClient类做到这一点,并且效果很好.但是我被告知Retrofit要快得多,并且通过实现GSON来避免处理JSON解析,所以我想我会尝试一下.

我构建了我的客户端,我可以发出请求,但是,我的客户端并没有"记住会话密钥,因此我无法做任何事情.有谁知道如何告诉改造"接受和用户cookie为未来的请求"?我迷路了!任何建议都会做:)

public class ApiClient{

    private static final String API_URL = "http://192.168.1.25:8080";

    private static RestAppApiInterface sRestAppService;

    public static RestAppApiInterface getRestAppApiClient() {
        if (sRestAppService == null) {

            CookieManager cookieManager = new CookieManager();
            cookieManager.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
            CookieHandler.setDefault(cookieManager);

            RestAdapter restAdapter = new RestAdapter.Builder()
                    .setEndpoint(API_URL)
                    .build();
            sRestAppService = restAdapter.create(RestAppApiInterface.class);
        }
        return sRestAppService;
    }

}
Run Code Online (Sandbox Code Playgroud)

cookies session android json retrofit

10
推荐指数
2
解决办法
8175
查看次数

Android gradle,它是什么?

在同一个网站上还有一些其他相关问题,但我无法理解这一点.

在他们的网站上,他们非常抽象.

Gradle是构建自动化的演变.Gradle可以自动构建,测试,发布,部署以及更多软件包或其他类型的项目,例如生成的静态网站,生成的文档或其他任何内容.

那个的真实意义是什么?谢谢

android gradle

9
推荐指数
1
解决办法
2452
查看次数