小编And*_*ega的帖子

检测未调用Moto 360/circlular shape和onApplyWindowInsetListener

看起来检测Moto 360屏幕形状的常用方法无法正常工作.

我知道有报道说windowInset.isRound()在Moto 360 中返回错误.

目前我的代码如下

WatchViewStub viewStub = new WatchViewStub(this);
viewStub.setRoundLayout(com.pizzaentertainment.weatherwatchface.R.layout.bau);
viewStub.setRectLayout(com.pizzaentertainment.weatherwatchface.R.layout.bau_rect);
viewStub.setOnApplyWindowInsetsListener( new View.OnApplyWindowInsetsListener() {
    @Override
    public WindowInsets onApplyWindowInsets(View view, WindowInsets windowInsets) {
        Log.d("ISWHAT?", "ASD" +windowInsets.isRound());
        return windowInsets;
    }
});
addContentView(viewStub, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
viewStub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() {
    @Override
    public void onLayoutInflated(WatchViewStub watchViewStub) {
        Log.d("INFLATED", "INFLATED");
    }
});
Run Code Online (Sandbox Code Playgroud)

我的主要问题是onApplyWindowInsets我的LG G手表和三星Galaxy Gear Live都不会被调用.我用360用户进行了测试,根据测试,该方法也没有在他的设备上调用.

  1. 为什么OnApplyWindowInsetListener不被召唤?
  2. 为什么获得回调工作报告的人windowInset.isRound()在Moto 360上返回false?
  3. 我们如何认识Moto 360(以及具有圆形形状的未来)?来自Build.MODEL

android moto-360 wear-os

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

使用RXJava进行缓存处理

我正在尝试用rxJava实现这个工作流程,但我确定我是在滥用还是做错了.

  • 用户要求登录
  • 如果loginResult在缓存中可用,则"发出"缓存的LoginResult
  • 实际上,如果一切都成功,则实际执行对Web服务的请求并缓存结果
  • 如果发生错误,则最多重试3次,如果有第4次,则清除缓存.

这是我完整的代码片段.

public class LoginTask extends BaseBackground<LoginResult> {
  private static CachedLoginResult cachedLoginResult = new CachedLoginResult();
  private XMLRPCClient xmlrpcClient;
  private UserCredentialsHolder userCredentialsHolder;

  @Inject
  public LoginTask(XMLRPCClient client, UserCredentialsHolder userCredentialsHolder) {
    this.xmlrpcClient = client;
    this.userCredentialsHolder = userCredentialsHolder;
  }

  @Override
  public LoginResult performRequest() throws Exception {
    return UserApi.login(
        xmlrpcClient,
        userCredentialsHolder.getUserName(),
        userCredentialsHolder.getPlainPassword());


  }

  @Override
  public Observable<LoginResult> getObservable() {
    return cachedLoginResult.getObservable()
        .onErrorResumeNext(
            Observable.create(
                ((Observable.OnSubscribe<LoginResult>) subscriber -> {
                  try {
                    if (!subscriber.isUnsubscribed()) {
                      subscriber.onNext(performRequest()); // actually performRequest
                    }
                    subscriber.onCompleted();
                  } catch (Exception e) …
Run Code Online (Sandbox Code Playgroud)

java android design-patterns reactive-programming rx-java

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

如何使用winston将unique_id附加到我的快递节点日志而不重构所有内容?

我有一个Express应用程序.我想跟踪单个请求所做的所有记录.

Apache有一个名为的模块mod_unique_id,它在请求头中注入一个包含唯一哈希的特殊模块.我想在记录(任何东西)时使用这样的哈希.

例如,如果一个用户被apache分配了unique_id值"abcdefg"和我的代码中的某个地方(控制器,模型或任何东西),我生成一个调试日志,我希望每个日志条目都附加"abcdefg".

在我脑海中浮现的唯一想法是创建一个记录器实例app.use(),并将该记录器实例传递给所有需要的函数(模型,库等)以生成正确的响应.

不幸的是,这将导致我重写大量代码,让旧函数接受这个新的记录器实例.

有没有人知道一个更好的方法,每个"请求"有一个"记录器"实例,可以通过某种方式访问​​,而不会将这个"按请求创建的记录器"传递给任何东西?

PS:我目前正在使用winston日志

logging node.js unique-id express winston

5
推荐指数
0
解决办法
403
查看次数

Field.getGenericType()返回java.lang.Class的实例而不是Type

我遇到了关于proguard和一些反思的问题.

Myclass.java

package not.obfuscated
class MyClass {
    public List<InnerClass> childs;
}
Run Code Online (Sandbox Code Playgroud)

InnerClass.java

package not.obfuscated
class InnerClass {
    //.somestuff
}
Run Code Online (Sandbox Code Playgroud)

在proguard.cfg里面我有:

-keep class not.obfuscated.** {*;}
Run Code Online (Sandbox Code Playgroud)

在另一个类中,我设法获取MyClass.childs字段的"Field"实例,然后尝试获取getGenericType以确定列表括号内的哪个类(<InnerClass>)

出于日志记录的目的,我做了以下Log.d代码(字段是表示MyClass.childs的Field实例):

Log.d("FIELD", field.getName()+" generic type: "+ field.getGenericType()+ " class: "+ field.getGenericType().getClass().getName());
Run Code Online (Sandbox Code Playgroud)

输出如下(第2行):

LogCat输出

如您所见,field.getGenericType.toString()可能是正确的,但是当我要求该类时,它返回java.lang.Class.事实上,当我这样做时,事后几行:

ParameterizedType listType = (ParameterizedType) field.getGenericType();
Run Code Online (Sandbox Code Playgroud)

我收到一个ClassCastException:

java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType
Run Code Online (Sandbox Code Playgroud)

我坚信这是由于proguard,但据我所知,我已经排除了not.obfuscated包中的所有类.最后一次尝试我也插入了行-keep类java.lang.List(显然没有发生).

java generics reflection android proguard

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

应用程序未显示在全局快速搜索框中

我想创建一个简单的应用程序,在android中的全局快速搜索框中显示信息.

我确实按照一些方法进行了操作,但是我无法在菜单"设置 - >搜索 - >可搜索项目"中获取我的应用程序,这是让用户在QSB中检查他想要的建议的菜单.

我可以在这里附加清单和可搜索的xml文件.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
 package="com.andreabaccega.marketsearch" android:versionCode="1"
 android:versionName="1.0">
 <application android:icon="@drawable/icon" android:label="@string/app_name">
  <activity android:name=".Init" android:label="LUPO">

   <intent-filter>
    <action android:name="android.intent.action.SEARCH" />
    <category android:name="android.intent.category.DEFAULT" />
   </intent-filter>

   <meta-data android:name="android.app.searchable"
    android:resource="@xml/searchable" />
  </activity>
  <provider android:name="com.andreabaccega.marketsearch.SuggestionProvider"
   android:authorities="com.andreabaccega.marketsearch.SuggestionProvider" android:syncable="false"/>
 </application>
 <uses-sdk android:minSdkVersion="7" />
 <uses-permission android:name="android.permission.GET_ACCOUNTS"></uses-permission>
 <uses-permission android:name="android.permission.USE_CREDENTIALS"></uses-permission>
 <uses-permission android:name="android.permission.INTERNET"></uses-permission>

</manifest> 
Run Code Online (Sandbox Code Playgroud)

这是searchable.xml文件

<searchable xmlns:android="http://schemas.android.com/apk/res/android"
 android:label="Teasdst"
 android:searchSettingsDescription="asd asd asd"
 android:includeInGlobalSearch="true" 
 android:searchSuggestAuthority="com.andreabaccega.marketsearch.SuggestionProvider"
 android:searchSuggestIntentAction="android.intent.action.VIEW" 
 android:searchSuggestIntentData="content://com.andreabaccega.marketsearch.SuggestionProvider/"
  >

</searchable>
Run Code Online (Sandbox Code Playgroud)

android

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