Android中RuntimeException(“Stub!”)的含义

我在Android代码中浏览,因为我想查看Activity.finish()方法的内容。

我只想确认在Activity.finish()中会调用onDestroy()方法。

但我在这种方法(以及许多其他方法)中发现的是:

 public void finish() { throw new RuntimeException("Stub!"); } 

那么在哪里可以find真正破坏活动的代码? 谢谢!

    这是因为在SDK中找不到源代码。 要查看源代码,您需要下载Android SDK的源代码,因此Android studio可以显示相应的代码。 看到这个图像

    您正在检入.class而不是.java文件。

    我不知道你在哪里看,但是finish()的代码就是这个

     /** * Call this when your activity is done and should be closed. The * ActivityResult is propagated back to whoever launched you via * onActivityResult(). */ public void finish() { finish(DONT_FINISH_TASK_WITH_ACTIVITY); } 

    它调用私有实现

     /** * Finishes the current activity and specifies whether to remove the task associated with this * activity. */ private void finish(int finishTask) { if (mParent == null) { int resultCode; Intent resultData; synchronized (this) { resultCode = mResultCode; resultData = mResultData; } if (false) Log.v(TAG, "Finishing self: token=" + mToken); try { if (resultData != null) { resultData.prepareToLeaveProcess(this); } if (ActivityManagerNative.getDefault() .finishActivity(mToken, resultCode, resultData, finishTask)) { mFinished = true; } } catch (RemoteException e) { // Empty } } else { mParent.finishFromChild(this); } } 

    这里重要的是ActivityManagerNative.getDefault().finishActivity ,您可以在此文件中的第3359行findhttps://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/app/ActivityManagerNative。 java的

    如果你想深入了解,你可以沿着这条路走。

    搜索android源代码也可以在grepcode上find ,在那里你可以查找和比较来自不同sdk版本的代码