我在开发适用于Android的应用时遇到了一个奇怪的问题。我尝试使用手机(Oneplus One),Android Studio和ADB调试我的应用程序。一切正常,除了当我启动一个已经在Android Studio中设置了断点的活动时,它会崩溃,没有日志输出。当活动是启动活动时以及我以意图启动活动时都会发生这种情况。
你可以想象,这是令人难以置信的恼人,因为我的onCreate()
方法中有一个我想要破解的错误。
我尝试将行Debug.waitForDebugger()
添加到断点上方的代码位,但这并没有帮助。
我还没有为此问题添加任何代码,因为此错误与代码无关。它发生在多个项目和活动中。我没有其他Android手机可以对其进行测试,因此无法检查。有没有其他人经历过这个和/或找到了解决办法?
提前致谢。
编辑: 添加了代码示例。当没有设置断点时,此代码不会崩溃,断点也不需要在这段代码中发生崩溃。这只是我尝试调试的代码,如果不了解我的服务器后端,就无法修复其行为,因此我并没有寻求帮助。
protected void onCreate(Bundle savedInstanceState) {
//Create activity
getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Check for play services
if (!checkPlayServices()){
//Exit and notify user that play services are required
Toast.makeText(this, "Google Play Services must be installed for Insty to work", Toast.LENGTH_LONG).show();
System.exit(1);
}
//Get token. If null, push to login screen
SharedPreferences sp = getBaseContext().getSharedPreferences(NetService.SP_APP, Context.MODE_PRIVATE);
if (!sp.contains(NetService.SP_TOKEN)){
//Token doesn't exist - push to login screen
startActivity(new Intent(MainActivity.this, LoginActivity.class));
MainActivity.this.finish();
return;
}
//Setup action bar
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setHomeButtonEnabled(true);
//Populate navigation drawer
mDrawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout);
mDrawerList = (ListView)findViewById(R.id.left_drawer);
String[] menuItems = getResources().getStringArray(R.array.menu_items);
mDrawerList.setAdapter(new ArrayAdapter<>(this, R.layout.drawer_list_item, menuItems));
//Set an on click listener
mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
//Add to action bar
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.open_drawer, R.string.close_drawer){
@Override
public void onDrawerClosed(View view){
invalidateOptionsMenu();
}
@Override
public void onDrawerOpened(View view){
invalidateOptionsMenu();
}
};
mDrawerLayout.post(new Runnable() {
@Override
public void run() {
mDrawerToggle.syncState();
}
});
//Start a token verification
ResultReceiver receiver = new ResultReceiver(new Handler()){
@Override
protected void onReceiveResult(int resultCode, Bundle resultData) {
VerifyResult result = VerifyResult.values()[resultData.getInt(NetService.RESULT_VERIFY)];
switch (result){
case VALID:
//Do nothing
break;
case INVALID:
//Push back to login screen
startActivity(new Intent(MainActivity.this, LoginActivity.class));
MainActivity.this.finish();
break;
case BAD_NETWORK:
//Toast to let user know network is down
Toast.makeText(MainActivity.this, R.string.bad_network, Toast.LENGTH_LONG).show();
break;
case ERROR:
//Toast to show error
Toast.makeText(MainActivity.this, R.string.generic_error, Toast.LENGTH_LONG).show();
break;
}
}
};
//Start verify
NetService.startActionVerify(this, receiver, sp.getString(NetService.SP_TOKEN, ""));
//Open on chats fragment
FragmentManager fragMgr = getFragmentManager();
fragMgr.beginTransaction().replace(R.id.content_frame, new ChatsFragment()).commit();
}
答案 0 :(得分:0)
Android Studio的最新版本(1.1-1.2)有一些调试错误可能导致新的内联调试功能。 There是一个问题主题,也是一个解决方案。试一试,它解决了我的调试问题。