设置断点时 Android Activity 崩溃

标签 android android-studio adb oneplusone

我在开发 Android 应用程序时遇到了一个奇怪的问题。我正在尝试使用我的手机(Oneplus One)、Android Studio 和 ADB 调试我的应用程序。一切正常,除了当我启动一个已经在 Android Studio 中设置了断点的 Activity 时,它崩溃了,没有日志输出。当 Activity 是启动 Activity 和我以 Intent 开始一个 Activity 时,都会发生这种情况。

正如您所想象的,这非常令人恼火,因为我的 onCreate() 方法中有一个我想闯入的错误。

我已经尝试将 Debug.waitForDebugger() 行添加到断点上方的代码位,但这没有帮助。

我没有为这个问题添加任何代码,因为这个错误与代码无关。它发生在多个项目和 Activity 中。我没有另一部 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();

}

最佳答案

Android Studio 的最新版本 (1.1-1.2) 有一些调试错误,可能是新的内联调试功能的原因。 There是一个issue主题,里面有一个解决方案。试一试,它解决了我的调试问题。

关于设置断点时 Android Activity 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30991539/

相关文章:

Java错误: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference

android - 应用程序 :mergeDebugResources error in Android Studio after upgrade

android - 从 adb 在后台运行 logcat

Android Ice Cream Sandwich Edittext : Disabling Spell Check and Word Wrap

java - Android异步任务的同步策略

java - 我正在尝试从不同的 URL 获取数据,然后在后台加载

java.lang.NoClassDefFound 错误 javax Gmail API

android - 为什么我的 .android 文件夹不会自动生成 adbkey 和其他文件? (亚行)

android - 在三星手机上设置应用程序的设备所有者权限

android - myIntent.getStringExtra 返回空值?