significato di RuntimeException (“Stub!”) in Android

Stavo navigando nel codice di Android perché volevo vedere cosa c’è nel metodo Activity.finish ().

Volevo solo avere la conferma che in Activity.finish() ci sarebbe stata una chiamata al metodo onDestroy() .

Ma quello che ho trovato in questo metodo (e in molti altri) era:

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

Quindi DOVE POSSO trovare il codice che davvero distrugge l’attività? Grazie!

Questo perché il codice sorgente non è stato trovato in SDK. Per vedere il codice sorgente, è necessario scaricare il codice sorgente per l’SDK Android, in modo che Android Studio possa visualizzare il codice corrispondente. Guarda questa immagine

Stai effettuando il check in nel file .class not .java.

Non so dove hai guardato, ma il codice per finish() è questo

 /** * 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); } 

che chiama l’implementazione privata

 /** * 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); } } 

Importante: ActivityManagerNative.getDefault().finishActivity che puoi trovare alla riga 3359 in questo file https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/app/ActivityManagerNative. Giava

Se vuoi immergerti più a fondo, puoi semplicemente seguire il sentiero.

Cerca su fonti Android disponibile anche in grepcode , dove puoi cercare e confrontare il codice da diverse versioni di sdk