![](/img/trans.png)
[英]LogCat error in android studio which crashes app when running
[英]App crashes when Android Studio hits breakpoint which is inside a proxy
在我的日常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
為什么你需要這個Runnable
,它接觸一個View
,它不擁有? 您必須對內容視圖進行充氣,並且不要觸及其所有者范圍之外的視圖。 就像這樣:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
這是因為MainActivity
應該是View
的所有者; 一個Runnable
甚至沒有在UIThread
上運行 - 希望這應該讓它變得可以理解,為什么這將永遠不會成功。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.