Je surfais dans le code Android parce que je voulais voir ce qu'il y avait dans la méthode Activity.finish ().
Je voulais juste avoir la confirmation que dans Activity.finish()
il y aurait un appel à la méthode onDestroy()
.
Mais ce que j'ai trouvé dans cette méthode (et dans beaucoup d'autres) était:
public void finish() {
throw new RuntimeException("Stub!");
}
Alors OERE puis-je trouver le code qui détruit vraiment l'activité? Merci!
Je ne sais pas où vous avez regardé, mais le code de finish()
est le suivant
/**
* 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);
}
qui appelle la mise en œuvre privée
/**
* 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);
}
}
L'important ici est ActivityManagerNative.getDefault().finishActivity
que vous pouvez trouver à la ligne 3359 dans ce fichier https://Android.googlesource.com/platform/frameworks/base/+/master/core/Java/Android/ app/ActivityManagerNative.Java
Si vous voulez plonger plus profondément, vous pouvez simplement suivre le sentier.
Vous archivez le fichier .class et non .Java.