我有一个多活动应用程序。测试时,我注意到我在调用finish()时Android调试器没有断开连接。在我的LoadingActivity
(启动屏幕-第一个活动已启动)和MainActivity
(第二个活动已启动)上会发生此问题。
我将其范围缩小到以下最小的工作示例,以重现该问题。
创建新的Android应用程序
代码
在onCreate()
方法中,我们将运行2个代码示例。
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Case 1
// Working
// finish();
// Case 2
// Thread example not working - debugger remains attached
// Thread t = new Thread(() -> {
// runOnUiThread(() -> {
// finish();
// });
// });
// t.setName("Test Thread");
// t.start();
}
}
示例测试:
取消注释案例1 并在连接调试器的情况下运行,它应立即显示活动并关闭-很好,可以正常工作。调试器也已断开连接,太好了!
注释案例1 ,取消注释案例2 。运行附带调试器的案例2。该活动将暂时显示,然后结束,但是Android调试器仍然处于断开状态。
注意:
您可以在runOnUiThread(() -> ...
行上放置一个断点,并检查线程名称以确保
它正在运行吗?
在调用finish()
以查看卡住的内容后,我试图暂停调试器。只有Main
线程正在运行(请参见下图)
要在我的物理Android设备(正在对其进行测试的地方)上运行运行服务,我看不到应用程序正在运行。
结论
Android Studio 3.5.2出现调试器问题。
任何人都可以确认吗?