Android中RuntimeException(" Stub!")的含义

时间:2016-10-07 09:10:29

标签: java android android-activity stub

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

我只想确认在onDestroy()中会调用public void finish() { throw new RuntimeException("Stub!"); } 方法。

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

GROUP BY

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

4 个答案:

答案 0 :(得分:25)

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

答案 1 :(得分:3)

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

答案 2 :(得分:1)

我不知道你在哪里看,但是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行找到https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/app/ActivityManagerNative.java

如果你想深入了解,你可以跟踪。

答案 3 :(得分:0)

grepcode上搜索Android源代码,您可以在其中查找和比较来自不同sdk版本的代码