小编Wen*_*hao的帖子

Square LeakCanary无法找到符号

这是截图

build.gradle已根据github insturctions配置.LeakCanary类似乎未包含在内.

 dependencies {
   debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3'
   releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3'
 }
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

analyzer和watcher包中只有一个单个类文件.

memory android memory-leaks square leakcanary

23
推荐指数
2
解决办法
5528
查看次数

为什么"将编译kotlin转换为java"在Android Studio 3.1.2中显示为灰色

在此输入图像描述

但是,如果我手动执行"Show Kotlin Bytecode"并单击"Decompile",它将显示正确的java代码.

android kotlin android-studio

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

更改权限设置后,从最近的任务重新打开时会调用onCreate()

问题标题可能听起来很复杂,但这是我的情况.

我在活动中有一个地图片段.简单.打开存储权限以允许显示Map,工作正常.通过按Home键来关闭应用程序,然后关闭存储权限并从最近的任务打开应用程序,应用程序崩溃.

问题是不是调用主机Activity的onResume(),而是在主机Activity上调用onCreate()以及Map片段的onCreateView().因此它抛出异常.

当更改权限并因此重新创建Activity时,似乎应用程序进程被杀死.

    09-24 14:42:55.071: E/AndroidRuntime(12918):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
09-24 14:42:55.071: E/AndroidRuntime(12918): Caused by: 
java.lang.NullPointerException: Attempt to write to field 'int android.support.v4.app.Fragment.mNextAnim' on a null object reference
09-24 14:42:55.071: E/AndroidRuntime(12918):    at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:718)
09-24 14:42:55.071: E/AndroidRuntime(12918):    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1489)
09-24 14:42:55.071: E/AndroidRuntime(12918):    at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:548)
Run Code Online (Sandbox Code Playgroud)

来自Activity的super.onStart()

android android-fragments android-permissions android-6.0-marshmallow

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

Android单元测试的正确方法

我知道这对所有Android开发者来说都是一个乏味的话题.但究竟什么是Android测试的正确方法?

这是我可以想象的.

70%单元测试(JUnit测试所有业务逻辑,网络层,数据库层等......)

20%集成测试(也许针对模拟服务器进行测试?主要测试API结果?)

10%的UI测试(模拟除UI交互之外的任何其他内容,很可能是Mockito + Espresso)

这是其他人都在追随的还是另一种模式?

提前致谢!

android unit-testing android-testing

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

是否可以在Android中模拟系统服务

所有.我是新手使用Mockito :)

Context mockContext = mock(Context.class);
TelephonyManager mockTelephonyManager = mock(TelephonyManager.class);
when(mockTelephonyManager.getNetworkCountryIso()).thenReturn("CN");

when(mockContext.getSystemService(Context.TELEPHONY_SERVICE)).thenReturn(mockTelephonyManager);
Run Code Online (Sandbox Code Playgroud)

当espresso测试尝试使用电话时,上述方法无效,它仍然返回系统网络国家ISO.有什么想法吗?谢谢!

android mockito

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

Java泛型命名约定

根据Java文档:

最常用的类型参数名称是:

E - Element(Java Collections Framework广泛使用)

K - 钥匙

N - 数字

T型

V - 价值

S,U,V等 - 第2,第3,第4类型

但是,我看过这样的代码

public <R> Observable<R> compose(Transformer<? super T, ? extends R> transformer) {
        return ((Transformer<T, R>) transformer).call(this);
    }
Run Code Online (Sandbox Code Playgroud)

这里是使用R,从哪个来源我可以找到R在这里的含义?

java generics

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

为什么notifyItemChanged只能在setAdapter之后的Runnable中运行?

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    RecyclerView list = (RecyclerView) findViewById(R.id.list);
    list.setLayoutManager(new LinearLayoutManager(this));
    final RecyclerView.Adapter adapter = getAdapter();
    list.setAdapter(adapter);

    adapter.notifyItemChanged(1, new Object());//this doesn't work
    list.post(new Runnable() {
        @Override
        public void run() {
            adapter.notifyItemChanged(1, new Object());//this works
        }
    });


}

@NonNull
private RecyclerView.Adapter getAdapter() {
    return new RecyclerView.Adapter() {
        @Override
        public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            return new ItemViewHolder( LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.list_view_item, parent, false));
        }

        @Override
        public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { …
Run Code Online (Sandbox Code Playgroud)

android android-adapter android-recyclerview

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

如何从Retrofit获取响应URL?

我正在使用Retrofit for REST web services我的android项目.它总体上工作得很好,直到我试图从返回URL读取几个参数.对于Web浏览器上的exapmle:

  1. 输入" http://foobar.com/ "
  2. 点击进入
  3. 它变成" http://foobar2.com/abc=123 "

现在问题是如何从改装响应中获得"abc = 123"值.谢谢堆!

android retrofit

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

为什么谷歌搜索在Android模拟器中不是最新的?

试图将android模拟器与android wearable配对.

我使用Google API和Lollipop 5.0.1创建了一个AVD(Nexus 5皮肤),Google服务在该仿真器上运行了7.3,但谷歌搜索功能已经过时了,它甚至有2.3主题,而且可穿戴需要更高版.多可惜!

android可穿戴伴侣 来自模拟器的Google搜索

我在这里做错了吗?我尝试使用genymotion配对模拟器,安装ARM翻译和谷歌服务后,Android Wearable Companion一直在崩溃.

如果有好帖子请分享,谢谢!

android android-emulator wear-os

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

使用Proxy时,为什么Kotlin会抛出IllegalArgumentException

这是Kotlin等效的Java代码,使用InvocationHandler:

override fun invoke(proxy: Any?, method: Method?, args: Array<out Any>?): Any {
    println("before httprequest--->" + args)
    val ret = method!!.invoke(obj, args)
    println("after httprequest--->")
    return ret
}
Run Code Online (Sandbox Code Playgroud)

Java代码:

public Object invoke(Object o, Method method, Object[] args) throws Throwable {
    System.out.println("jdk--------->http" + args);
    Object  result=method.invoke(target, args);
    System.out.println("jdk--------->http");
    return result;
}
Run Code Online (Sandbox Code Playgroud)

在这两种情况下args都是null,但是如果我运行它,Kotlin代码就会给出异常

Exception in thread "main" java.lang.IllegalArgumentException: wrong number of arguments
Run Code Online (Sandbox Code Playgroud)

Kotlin使用标准Java类的原因是什么?

java proxy-classes kotlin

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