小编ImM*_*han的帖子

改造 - Okhttp客户端如何缓存响应

我正在尝试缓存由Retrofit(v 1.9.0)和OkHttp(2.3.0)完成的http调用的响应.如果我尝试在没有互联网的情况下拨打电话,它总是会拨打网络电话java.net.UnknownHostException.

RESTClient实现

public class RestClient {
public static final String BASE_URL = "http://something.example.net/JSONService";
private com.ucc.application.rest.ApiService apiService;

public RestClient() {
    Gson gson = new GsonBuilder()
            .setDateFormat("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'SSS'Z'")
            .create();

    RequestInterceptor requestInterceptor = new RequestInterceptor() {

        @Override
        public void intercept(RequestFacade request) {
            request.addHeader("Accept", "application/json");
            int maxAge = 60 * 60;
            request.addHeader("Cache-Control", "public, max-age=" + maxAge);
        }
    };

    RestAdapter restAdapter = new RestAdapter.Builder()
            .setLogLevel(RestAdapter.LogLevel.FULL)
            .setEndpoint(BASE_URL)
            .setClient(new OkClient(OkHttpSingleTonClass.getOkHttpClient()))
            .setConverter(new GsonConverter(gson))
            .setRequestInterceptor(requestInterceptor)
            .build();

    apiService = restAdapter.create(com.ucc.application.rest.ApiService.class);
}

public com.ucc.application.rest.ApiService getApiService() {
    return apiService;
} …
Run Code Online (Sandbox Code Playgroud)

java android cache-control retrofit okhttp

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

在android中实现Socket.io的最佳方法

我计划在这个库中为基于聊天的应用程序在android中实现Socket.io .据我所知,图书馆看起来很不错.我想知道如何在整个应用程序中始终保持单个套接字连接?在这里,我列出了实现的方法,其中我需要最好和最稳定的方式.

三种方式

MainApplication类扩展了Application

通过这种方式,我们有一个很好的范围,即在主线程(或应用程序的生命周期)中维护套接字连接,并且每当从活动中需要套接字实例时我们都可以轻松获得它.但它的主要线索也是问题所在.它可能会阻止主线程.

BoundService

通过这种方式,我们可以服务与活动绑定,我们可以简单地使用它.在单独的线程中执行是实现IO /网络调用的方法.但是,交叉处理转移比在同一过程中直接访问更昂贵.

独生子

在Singleton中维护连接也很有意义.但是我们不知道实例何时被进程杀死,因为它在活动生命周期中不起作用.

如果我有意义,请帮助我.如果没有评论出来.

编辑

我已经给出了更适合我的答案.

java sockets android android-lifecycle socket.io

20
推荐指数
2
解决办法
7547
查看次数

单击 Jetpack Compose 时如何禁用涟漪效应

在 Jetpack Compose 中,当您启用clickable {}可组合的修改器时,默认情况下它会为其启用涟漪效果。如何禁用此行为?

示例代码

Row(modifier = Modifier
         .clickable { // action }
)
Run Code Online (Sandbox Code Playgroud)

android android-jetpack android-jetpack-compose

12
推荐指数
4
解决办法
2350
查看次数

带有 Proguard 的 Kotlin 反射失败

假设我有这门课

data class Person(val name: String?)
Run Code Online (Sandbox Code Playgroud)

当我 proguard 并运行该应用程序时,出现以下异常

kotlin.reflect.jvm.internal.KotlinReflectionInternalError: No accessors or field is found for property val com.whatever.packagee.Person.name: kotlin.String?
Run Code Online (Sandbox Code Playgroud)

我还发现这个问题是从这个反射代码库中抛出的。任何帮助,将不胜感激

java proguard kotlin kotlin-reflect

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

Google Interactive Media Ads (IMA) 和 Google AdMob 之间的区别

我阅读了有关Google IMAGoogle AdMob 的信息,据我了解,两者都用于投放广告。不同之处在于:

1)IMA通常在需要视频广告时使用Google ,我认为 AdMob 不支持。
2)AdMob一般在只需要Banner Ads 时使用,因为它比IMA SDK 更容易集成。
3) 在 的情况下IMA,需要VAST 服务器来返回 Ads,但在 的情况下AdMobAdMob需要一个帐户来创建 AdUnit。

所以我的问题是:

1)我对差异的理解是否正确?
2)IMA似乎是功能的超集,AdMob因为它也可以支持横幅广告。那是对的吗?
3)是否有任何其他理由来使用AdMob,而不是IMA除了集成的简便性和不要求VAST服务器?

ads admob google-ima

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

如何在Flutter中模糊容器或任何小部件

我试图在类似这样的Container小部件上实现模糊效果。

期望:

在此处输入图片说明

我试图去实现它BackdropFilterImageFilter.blur过滤器,但它的任何帮助,不会。

child: Container(
    child: Stack(
      children: <Widget>[
        BackdropFilter(
          filter: ImageFilter.blur(sigmaX: 10.0, sigmaY: 10.0),
          child: Container(
            decoration: BoxDecoration(
                shape: BoxShape.circle,
                color: color
            ),
            height: 60,
            width: 60,
          ),
        ),
        Positioned(
          left: 15,
          top: 15,
          child: Container(
            decoration: BoxDecoration(
                shape: BoxShape.circle,
                color: Colors.lightBlue
            ),
            height: 30,
            width: 30,
          ),
        ),
      ]
    ),
  )
Run Code Online (Sandbox Code Playgroud)

输出:

在此处输入图片说明

flutter

2
推荐指数
5
解决办法
1840
查看次数

使用填充外边界绘制Rectagle

我正在绘制一个矩形填充外的矩形.我尝试了一些这个.但是不能得到我所期望的完美的.

这就是我的预期.

取景器

我试过了

    Point pTopLeft = new Point();
    Point pBotRight = new Point();
    pTopLeft.x = 100;
    pTopLeft.y = 100;
    pBotRight.x = canvas.getWidth() - 100;
    pBotRight.y = canvas.getHeight() - 100;
    Rect above = new Rect(0, 0, canvas.getWidth(), pTopLeft.y);
    paint.setColor(Color.parseColor("#77000000"));
    canvas.drawRect(above, paint);
    Rect left = new Rect(0, pTopLeft.y, pTopLeft.x, pBotRight.y);
    paint.setColor(Color.parseColor("#77000000"));

    canvas.drawRect(left, paint);
    Rect right = new Rect(pBotRight.x, pTopLeft.y, canvas.getWidth(),
            pBotRight.y);
    paint.setColor(Color.parseColor("#77000000"));
    canvas.drawRect(right, paint);
    Rect bottom = new Rect(0, pBotRight.y, canvas.getWidth(),
            canvas.getHeight());

    paint.setColor(Color.parseColor("#77000000"));
    Paint paint_text = new Paint();
    paint_text.setColor(Color.WHITE);
    paint_text.setTextSize(50);
    paint_text.setTextAlign(Align.CENTER);

    canvas.drawText("Position …
Run Code Online (Sandbox Code Playgroud)

android canvas android-canvas

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