小编CoX*_*ier的帖子

Dart中命名和位置参数之间有什么区别?

Dart支持命名的可选参数和位置可选参数.两者有什么不同?

另外,如何判断是否实际指定了可选参数?

dart

105
推荐指数
6
解决办法
4万
查看次数

为什么我无法调试Proxy.newProxyInstance方法?

我在Android上使用Retrofit.

我定义了一个服务GitHubService.

public interface GithubService {

    @GET("users/{user}")
    Call<ResponseBody> fetchUserInfo(@Path("user") String user);

}
Run Code Online (Sandbox Code Playgroud)

然后我创建服务.

Retrofit retrofit = new Retrofit.Builder()
        .baseUrl("http://api.github.com")
        .build();

GithubService service = retrofit.create(GithubService.class);
Call<ResponseBody> call = service.fetchUserInfo("coxier");
call.enqueue(...);
Run Code Online (Sandbox Code Playgroud)

如您所见,我使用上面的代码来获取github的用户信息.以上代码适合我.现在我想知道Retofit是如何工作的所以我读了源代码Retrofit#create.下面的代码是.阅读后,我仍然不知道它的魔力然后我决定调试Retroft.

public <T> T create(final Class<T> service) {
  ...
  return (T) Proxy.newProxyInstance(...,
      new InvocationHandler() {
        ...
        @Override public Object invoke(..)
            throws Throwable {

          if (method.getDeclaringClass() == Object.class) {
            return method.invoke(this, args);
          }
          ...
          return loadServiceMethod(method).invoke(args != null ? args : emptyArgs);
        }
      });
}
Run Code Online (Sandbox Code Playgroud)

我在线调试if(method.getDeclaringClass() == …

java android retrofit2

11
推荐指数
1
解决办法
234
查看次数

在RecycleView适配器中实现多个ViewHolder类型

这可能是一个讨论而不是一个问题.

正常的方式来实现多种类型

如您所知,如果我们想要实现多种类型RecyclerView,我们应该提供多种CustomViewHolder扩展RecyclerView.ViewHolder.

对于exmpale,

class TextViewHolder extends RecyclerView.ViewHolder{
    TextView textView;
}

class ImageViewHolder extends RecyclerView.ViewHolder{
    ImageView imageView;
}
Run Code Online (Sandbox Code Playgroud)

然后我们必须覆盖getItemViewType.并onCreateViewHolder进入构造TextViewHolderImageViewHolder.

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    if (viewType == 0) {
        return new ImageViewHolder(mLayoutInflater.inflate(R.layout.item_image, parent, false));
    } else {
        return new TextViewHolder(mLayoutInflater.inflate(R.layout.item_text, parent, false));
    }
} 
Run Code Online (Sandbox Code Playgroud)

上面的代码是正常的,但还有另一种方式.

其他方式

我想只有一个CustomViewHolder就足够了.

 class MultipleViewHolder extends RecyclerView.ViewHolder{
    TextView textView;
    ImageView imageView;

    MultipleViewHolder(View itemView, int type){
       if(type == …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-view android-viewholder android-recyclerview

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

如何在 Dart 中发起网络请求并返回一个 json 对象

发出网络请求对 Python 来说很容易,而使sync请求变得容易的是该请求。

在 Dart 中,我可以提出这样的请求:

HttpClient client = new HttpClient();
client.getUrl(Uri.parse("http://www.example.com/"))
    .then((HttpClientRequest request) {
    // Optionally set up headers...
    // Optionally write to the request object...
    // Then call close.
    ...
    return request.close();
    })
    .then((HttpClientResponse response) {
    // Process the response.
    ...
    });
Run Code Online (Sandbox Code Playgroud)

显然这是异步请求。在我看来,上面的代码可以重复使用很多次。所以我想发出一个请求并返回一个 JSON 对象。

getResponse(String url) async {
    HttpClient httpClient = new HttpClient();
    HttpClientRequest request = await httpClient.getUrl(Uri.parse(url));
    HttpClientResponse response = await request.close();
    String responseBody = await response.transform(utf8.decoder).join();
    Map jsonResponse = jsonDecode(responseBody) as Map; …
Run Code Online (Sandbox Code Playgroud)

dart flutter

7
推荐指数
1
解决办法
2337
查看次数

导入错误:没有名为 common 的模块

我的项目有两个目录commoncore.

root
 |----common
 |       |-----__init__.py
 |       |-----util.py
 |
 |------core
         |-----__init__.py
         |------iemoji.py
Run Code Online (Sandbox Code Playgroud)

在 root 中,我执行python core/iemoji.py,出现错误。

回溯(最近一次调用最后一次):
文件“core/iemoji.py”,第 6 行,在
来自 common import util 的 模块中
ImportError:没有名为 common 的模块

我像这样导入 utils.py:

from common import util
Run Code Online (Sandbox Code Playgroud)

python

6
推荐指数
1
解决办法
7万
查看次数

FFmpeg中的不同h264编码器

ffmpeg4.0中,有几个h264编码器.如果你使用./configure --list-encoders | grep "h264",你可以看到它们.

  • h264_amf
  • h264_nvenc
  • h264_omx
  • h264_qsv
  • h264_v4l2m2m
  • h264_vaapi
  • h264_videotoolbox

我不知道它们之间有什么区别.我想使用ffmpeg将本地gif转换为mp4,那么哪个编码器适合我?

ffmpeg h.264 android-ffmpeg

6
推荐指数
1
解决办法
4721
查看次数

警告:找不到引用的类

onDelete在Kotlin类中有一个方法.

override fun onDelete(position: Int) {
    templates?.apply {
         val deleteDialog = DeleteTemplateDialog(view.getViewContext())
            deleteDialog.confirmListener = {
                CustomTemplateRepository.getInstance().deleTemplate(this[position].templateId!!)
                        .subscribe({
                            deleteDialog.dismiss()
                            this.removeAt(position)
                            customTemplateAdapter?.notifyDataSetChanged()
                            view.showEmptyView(this.isEmpty())
                        }, {})
            }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我构建release-apk时,我启用proguard但由于以下警告而失败.

警告:com.uniquestudio.android.iemoji.module.library.customtemplate.MyTemplatePresenter $ onDelete $ 1 $ 1 $ 2:找不到引用的类com.uniquestudio.android.iemoji.module.library.customtemplate.MyTemplatePresenter $ onDelete $ 1 $ 1

当我使用dex2jar从debug-APK检索此类时.我懂了.

public void onDelete(final int paramInt)
{

    final DeleteTemplateDialog localDeleteTemplateDialog = new DeleteTemplateDialog(this.view.getViewContext());
    localDeleteTemplateDialog.setConfirmListenner((Function0)new Lambda(localArrayList)
    {
    public final Disposable invoke()
    {
        CustomTemplateRepository localCustomTemplateRepository = CustomTemplateRepository.Companion.getInstance();
        String str = ((Template)this.receiver$0.get(paramInt)).getTemplateId();
        if (str == null) {
        Intrinsics.throwNpe(); …
Run Code Online (Sandbox Code Playgroud)

java android proguard kotlin

6
推荐指数
1
解决办法
552
查看次数

在根项目中找不到任务

我困惑gradle build lifecycle了几天。参考告诉我

Gradle 构建具有三个不同的阶段。

  • 初始化
  • 配置
  • 执行

第三步是创建任务吗?如果是这样,如何在项目对象中gradle找到所有内容tasks

这是一个例子。

 rootporject
       |----app
            |----build.gradle
            |----checkstyle.gradle
Run Code Online (Sandbox Code Playgroud)

build.gradle很简单,只要正常。checkstyle.gradle文件有任务。这是它的内容。

apply plugin: 'checkstyle'

task checkstyle(type:Checkstyle) {
    description 'Runs Checkstyle inspection against girl sourcesets.'
    group = 'Code Quality'
    configFile rootProject.file('checkstyle.xml')
    ignoreFailures = false
    showViolations true
    classpath = files()
    source 'src/main/java'
}
Run Code Online (Sandbox Code Playgroud)

之后./gradlew -q tasks,就没有任务了checkstyle

但是,如果我将定义删除到 中build.gradle,我就明白了

有什么问题吗?提前致谢。

编辑

来自文档

Project 和 build.gradle 文件之间存在一对一的关系。

android gradle android-gradle-plugin

5
推荐指数
1
解决办法
7117
查看次数

相应的组ID未添加到应用程序的进程中

Adb命令adb shell dumpsys package com.hackerli.girl可以帮助我获取应用程序信息.

在我请求android.permission.WRITE_EXTERNAL_STORAGE 许可之前,我的应用程序有一个gids=[3003].

requested permissions:
  android.permission.INTERNET
  android.permission.WRITE_EXTERNAL_STORAGE
  android.permission.READ_EXTERNAL_STORAGE
  android.permission.ACCESS_NETWORK_STATE
install permissions:
  android.permission.INTERNET: granted=true
  android.permission.ACCESS_NETWORK_STATE: granted=true
User 0: ceDataInode=1531967 installed=true hidden=false suspended=false stopped=true notLaunched=false enabled=0
  gids=[3003]
  runtime permissions:
User 999: ceDataInode=0 installed=false hidden=false suspended=false stopped=true notLaunched=true enabled=0
  gids=[3003]
  runtime permissions:
Run Code Online (Sandbox Code Playgroud)

android.permission.WRITE_EXTERNAL_STORAGE授予运行时权限后,我得到以下信息.

requested permissions:
  android.permission.INTERNET
  android.permission.WRITE_EXTERNAL_STORAGE
  android.permission.READ_EXTERNAL_STORAGE
  android.permission.ACCESS_NETWORK_STATE
install permissions:
  android.permission.INTERNET: granted=true
  android.permission.ACCESS_NETWORK_STATE: granted=true
User 0: ceDataInode=1531967 installed=true hidden=false suspended=false stopped=false notLaunched=false enabled=0
  gids=[3003]
  runtime permissions:
    android.permission.READ_EXTERNAL_STORAGE: granted=true
    android.permission.WRITE_EXTERNAL_STORAGE: granted=true
User …
Run Code Online (Sandbox Code Playgroud)

linux android android-permissions

5
推荐指数
1
解决办法
217
查看次数

使用 RxJava2 下载带有进程的文件

正如标题所示,我想使用 RxJava2 和 okhttp 下载文件。而且还需要过程。

在我看来,数据流是String url-> Response-> 乘法Float process

所以首先我需要一个Single发出Response.

Single.create((SingleOnSubscribe<Response>) emitter -> {
    emitter.onSuccess(xx);// or throw error
});
Run Code Online (Sandbox Code Playgroud)

接下来我需要Flowable对吗?因为我想向观察者发送多个进程信息。

那么这里我该怎么办呢?提前致谢。

编辑

我尝试转换SingleFlowable.

Single.create((SingleOnSubscribe<Response>) emitter -> {
    emitter.onSuccess(xxx);// or throw error
}).toFlowable()
        .flatMap((Function<Response, Publisher<Float>>) response -> Flowable.create(xxx))
        .subscribe(process -> {});

}
Run Code Online (Sandbox Code Playgroud)

但我不知道这样做是否合适。

编辑

我不关心 okhttp 细节,我只关心与RxJava诸如Single和相关的内容Flowable

rx-java rx-java2

5
推荐指数
1
解决办法
3331
查看次数