小编mig*_*uel的帖子

Android Studio线程调试

我在使用Android Studio 1.1调试多线程应用时遇到了麻烦.似乎当一个断点被击中时,所有其他线程也会停止,而不仅仅是具有断点的线程.我在Activity的onCreate中使用以下方法创建了一个简单的测试应用程序.

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

    Thread a = new Thread("thread-a") {
        @Override
        public void run() {
            Log.v("thread", "thread-a");
        }
    };

    Thread b = new Thread("thread-b") {
        @Override
        public void run() {
            Log.v("thread", "thread-b");
        }
    };

    a.start();
    b.start();
}
Run Code Online (Sandbox Code Playgroud)

我在thread-a和thread-b中的Log.v行设置断点,然后在我的Lollipop Nexus 5上以调试模式运行它.

当应用程序启动时,它会在线程-a中遇到断点,但我注意到的第一个问题是应用程序的UI是空白的,就像主线程暂停一样.接下来我去看看thread-b中的断点也被命中了所以我在Android Studio的调试器中拉出了Threads视图,但是当我去扩展thread-b箭头时,那里什么都没有.当我展开主线程时,它显示它在onStart()的某处暂停.

Android Studio截图

我做错了什么或者这个调试器无法一次调试多个线程?

java debugging multithreading breakpoints android-studio

41
推荐指数
2
解决办法
3万
查看次数

片段活动中的commitAllowingStateLoss()

我的应用程序使用片段活动,它只处于纵向模式,无法旋转屏幕.

最初我使用的是这种commit()方法,但现在我计划不加区别地将这些更改commitAllowingStateLoss()为片段活动

如果不重新评估我使用片段的每个个案,是否有任何理由不得不加区分?

android fragment android-fragmentactivity

39
推荐指数
2
解决办法
3万
查看次数

在Android Studio中分离调试器

在Android Studio中,如何在调试器连接并调试正在运行的应用程序时将其分离?

在Eclipse中,图标看起来像这样 .

我一直在断开USB线,但这似乎是一种粗暴的方法.

android intellij-idea android-studio

22
推荐指数
2
解决办法
3855
查看次数

从Android应用中识别GoogleTv

有没有办法让Android应用程序在Java代码中告诉它是否在平板电脑或手机上运行?

android google-tv

9
推荐指数
3
解决办法
2874
查看次数

LoginButton与本机Fragment

我正在尝试使用这里的教程实现Facebook LoginButton https://developers.facebook.com/docs/android/login-with-facebook/v2.0#step2

问题就在于此authButton.setFragment(this);.

我使用的是原生片段(android.app.Fragment)但是setFragment需要支持Fragment(android.support.v4.app.Fragment).

编辑:我无法切换到支持片段,我有一个使用本机片段的大应用程序.

android facebook-android-sdk

9
推荐指数
2
解决办法
2348
查看次数

线程安全设置变量(Java)?

给出以下代码:

public class FooBar { 

  public static volatile ConcurrentHashMap myConfigData  = new ConcurrentHashMap();      

}

public class UpdaterThread implements Runnable { 

  public void run() {
    //Query the Data from the DB and Update the FooBar config Data
    FooBar.myConfigData = ConfigDataDAO.getLatestConfigFromDB();
  }

}
Run Code Online (Sandbox Code Playgroud)

Thread-Class将定期更新myConfigData Membervariable(每5分钟通过一个Executor).myConfigData的设置是在"外部"线程threadafe(原子)中,还是我必须将每个Read和Write操作同步到myConfigData变量?

编辑:问题不是ConcurrentHashMap是线程安全的(它是根据javadoc)而是在myConfigData Member变量中设置ConcurrentHashMap本身.这个变量可能被几个线程"一次"读取和写入,所以问题是设置是否是原子的.我认为这可以概括为"Java引用变量的设置是否为原子?".

(我也使它变得不稳定.这是一个不同的问题,与原子性无关 - 我的问题 - 而是"其他线程中的可见性"和之前发生的关系.)

java

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

如果使用RxJava 2仍在进行中,请不要重新执行Retrofit调用

我的目标是执行网络呼叫的方法,除非网络呼叫已在进行中,在这种情况下呼叫者订阅现有呼叫的结果.

这是我所拥有的,它主要起作用:

private AsyncSubject<Stuff> asyncSubject;

public Observable<Stuff> getStuff() {
    if (asyncSubject == null) {
        asyncSubject = AsyncSubject.create();
        asyncSubject
            .doAfterTerminate(new Action() {
                @Override
                public void run() throws Exception {
                    asyncSubject = null;
                }
            })
            .subscribe();
        retrofitApi.getStuff()
            .subscribe(asyncSubject);
    }
    return asyncSubject
        .someOperatorsHere();
}
Run Code Online (Sandbox Code Playgroud)

这主要起作用,因为asyncSubject在终止时将其自身空出,以便任何后续调用将重新执行网络请求.

但是有一个bug,有之间的窗口if (asyncSubject == null),并return asyncSubject在那里doAfterTerminate可以执行,我得到一个空指针.

任何想法如何修复错误.也许有更优雅的Rx方式来做到这一点?或synchronized阻止.或者是一种查询Retrofit以获取网络进度的方法.

java android rx-java retrofit

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

fragmentScenario Espresso 测试动态功能模块中的 Fragment

有没有人想出如何使用 fragmentScenario Espresso 测试(应用程序的 Activity 位于基本模块中)单独测试动态功能模块中的片段。

我已经克服了几个问题,例如关于样式不是 Theme.Appcompat 和 Android Studio 没有运行的withId抱怨,但现在在运行时抱怨它R.id在片段的布局中找不到。

android android-fragments android-studio android-espresso dynamic-feature-module

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

将图像与行中的文本基线对齐

如何将图像与行中文本的基线对齐。Modifier.alignByBaseline()适用于文本,但图像不参与对齐。

@Composable
fun Sample() {
    Row(
        modifier = Modifier.fillMaxWidth(),
        horizontalArrangement = Arrangement.Center,
    ) {
        Text(
            text = "One",
            modifier = Modifier.alignByBaseline(),
            fontSize = 40.sp
        )
        Image(
            modifier = Modifier
                .padding(horizontal = 8.dp)
                .size(24.dp)
                .alignBy(FirstBaseline),
            painter = painterResource(id = R.drawable.ic_launcher_background),
            contentDescription = "",
        )
        Text(
            text = "two",
            modifier = Modifier.alignByBaseline(),
            fontSize = 40.sp
        )
    }
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

android android-layout android-jetpack-compose

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

样式选择器可能吗?

有没有办法让选择器选择可以使用@style在布局中使用的样式元素?具体来说,我正在尝试根据state_pressed,state_focused和state_selected更改TextView元素,如颜色和阴影.我尝试了多种选择器,项目和样式的XML安排,并没有成功.

xml layout android

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

具有可空/非空输入的Kotlin函数映射到可空/非空输出

我试图想出一种方法将这两个函数合二为一,

fun parse(string: String): LibObject {
  return SomeJavaLibrary.parse(string)
}

fun parseNullable(string: String?): LibObject? {
    if (string != null) {
        return parse(string)
    } else {
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果输入可以为空,我希望输出可以为空,否则它是不可为空的.几乎像参数化的可空性.我猜这不可能,但想到我会问.如果没有,是否有更优雅的选择?

kotlin

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