小编Alo*_*ski的帖子

onTaskRemoved()未在HUAWEI和XIOMI设备中调用

我一直onTaskRemoved()在服务中使用方法来检测应用程序从设备最新列表中删除的时间.我预先形成一些日志记录和其他需要在发生这种情况时发生的操作.它完美地运作.

然后我在运行Android 6.0的HUAWEI设备上检查了这个方法.该方法永远不会被调用.我还添加了一个Log.d调用,正如预期的那样,这个日志从未出现过.在XIOMI设备上也是如此.

任何想法为什么会发生以及如何解决这个问题?或者有没有另一种方法来检测应用程序是否已从RECENT列表中删除而不依赖onTaskRemoved()

谢谢

service android huawei

32
推荐指数
3
解决办法
7103
查看次数

Mockito Uri.parse始终返回null

我有这种制作方法:

public boolean onShouldOverrideUrlLoading(String url) {
    boolean isConsumed = false;
    if (url.contains("code=")) {
         Uri uri = Uri.parse(url);
         String authCode = uri.getQueryParameter("code");
         mView.authCodeObtained(authCode);
         isConsumed = true;
    }
    return isConsumed;
}
Run Code Online (Sandbox Code Playgroud)

我有这个Mockito测试方法:

@Test
public void onShouldOverrideUrlLoadingOnAuthCodeObtained(){

    String code = "someCode";

    boolean isConsumed = mPresenter.onShouldOverrideUrlLoading("http://localhost/?code=" + code);

    verify(mView, times(1)).authCodeObtained(code);
    assertEquals(isConsumed, true);
}
Run Code Online (Sandbox Code Playgroud)

但似乎一旦代码运行并且它到达Uri.parse(url),我得到一个空指针.我错过了什么?在生产中,这非常有效.只有在测试时,Uri.parse()才会返回null.

谢谢!

testing android unit-testing mocking

8
推荐指数
4
解决办法
1万
查看次数

Android自定义EditText视图和NextFocusDown

在我的注册活动中,在垂直LinearLayout中设置了一些自定义的EditText视图.从上到下.

因为我需要为每个EditText提供一些额外的功能,所以我创建了一个自定义的EditText类,它提供了额外的功能.该类依赖于在attrs.xml中添加的一些自定义属性,并在类中检索,然后设置为膨胀的EditText.

一切都很好,除了一件我似乎无法解决的事情.我似乎无法让NextFocusDown处理我的自定义EditText视图.使用标准的EditText视图时,它工作正常.当我切换到我的自定义EditText时,它会忽略它.除此之外,所有其他属性的功能正常.

我错过了什么?有没有人设法在自定义编辑文本视图中使用该属性?

谢谢!

编辑:

这是自定义EditText类的一部分:

public class CustomEditText extends RelativeLayout {

private LayoutInflater mInflater = null;
private EditText mEditText;
private TextView mHintQuestionMark;
private TextView mHintText;
private Button mButtonClear;

private boolean isExpandView = false;
private boolean clearButtonEnabled = false;
private boolean hintEnabled = false;


public CustomEditText(Context context) {
    super(context);
    initViews();
}

public CustomEditText(Context context, AttributeSet attrs) {
    super(context, attrs);
    initViews();
    getCustomAttributes(context, attrs);
}

public CustomEditText(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    initViews();
    getCustomAttributes(context, attrs);
}

private …
Run Code Online (Sandbox Code Playgroud)

xml android view android-edittext

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

在特定时间点在gradle中运行curl命令

我使用 bugsnag 来监控 Android 应用程序中的崩溃情况。我在编译发行版本时也使用 ProGuard。我需要上传在项目的build/outputs/mapping/prod/release 文件夹中生成的mapping.txt 文件。

当我在(Windows)命令行中运行此命令时:

curl https://upload.bugsnag.com -F proguard=@C:/mapping.txt -F apiKey=1111111111111111111111 -F versionCode=11111111 -F appId=com.my.package -F versionNumber=1.0.0
Run Code Online (Sandbox Code Playgroud)

文件已上传,一切正常。

我所需要的只是向 gradle 添加一个任务,以便它在准备好后上传文件。因此,一旦我编译了要发布的项目,mapping.txt 文件就会生成,一旦准备好,就使用这个curl 命令上传该文件(顺便说一下,该命令取自bugsnag 的网站)。

我尝试了很多变化。当前的文件可以编译,但我不认为该文件正在上传......我看不到任何迹象表明它确实发生了。这是我当前使用的代码:

task uploadPro(type: Exec) {
    logger.error("inside upload task")
    commandLine 'cmd', '/c', 'curl', 'https://upload.bugsnag.com', '-F','proguard=@build/outputs/mapping/prod/release/mapping.txt', '-F', 'apiKey=1111111111111111111111', '-F', 'versionCode=111111', '-F', 'appId=com.my.package', '-F', 'versionNumber=1.0.0'
    standardOutput = new ByteArrayOutputStream()
    doLast {
        String output = standardOutput.toString()
        logger.info(output);
    }
}
Run Code Online (Sandbox Code Playgroud)

我也尝试使用这个:

def p = ['cmd', '/c', 'curl', 'https://upload.bugsnag.com', '-F', 'proguard=@build/outputs/mapping/prod/release/mapping.txt', '-F', 'apiKey=11111111111111111111111', '-F', 'versionCode=1111111', '-F', …
Run Code Online (Sandbox Code Playgroud)

android curl android-gradle-plugin bugsnag android-proguard

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