【发布时间】:2018-08-21 14:20:49
【问题描述】:
在我的日常 android 开发中,我在使用 android studio 进行调试时看到了几次应用程序崩溃的情况。我以为是android studio的问题。今天我尝试使用 jdb 进行调试,但是当我输入“where”命令时,应用程序仍然崩溃。并且回溯停止在调用代理之类的地方,这与往常不同。通常,回溯的顶部是handleMessage/nativePollOnce 之类的东西。所以我开始想也许它是由代理引起的。所以我用Proxy写了一些简单的代码来验证它。应用程序在断点处崩溃。有人见过这个吗?如何让应用程序不崩溃?真的很烦。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_main);
bindProxy(new Runnable() {
@Override
public void run() {
setContentView(R.layout.activity_main); // Set breakpoint here
}
}).run();
}
Runnable bindProxy(final Runnable r) {
return (Runnable)Proxy.newProxyInstance(getClassLoader(), new Class[]{Runnable.class}, new InvocationHandler() {
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("Wrapped runnable");
r.run();
return null;
}
});
}
}
jdb 回溯:
Breakpoint hit: "thread=main", android.support.v7.app.AppCompatActivity.setContentView(), line=139 bci=0
main[1] where
[1] android.support.v7.app.AppCompatActivity.setContentView (AppCompatActivity.java:139)
[2] com.example.ally.ipc.MainActivity$1.run (MainActivity.java:32)
[3] com.example.ally.ipc.MainActivity$2.invoke (MainActivity.java:44)
[4] java.lang.reflect.Proxy.invoke (Proxy.java:913)
The application has been disconnected
【问题讨论】:
标签: java android android-studio jdb