finish()とSystem.exit(0)の違い

852 ワード

finish()とSystem.exit(0)の違い


Activityにはライフサイクルがあります


        onCreate->onStart->onResume->onPause->onStop->onDestroy


finishメソッド


finishはActivityのメソッドであり、Activityのみに対してfinish()を呼び出すと、アクティビティをバックグラウンドに押し出すだけで、すぐに解放されません.
メモリ、アクティブなリソースはクリーンアップされていません. 
システムを呼び出すとexit(0)では、プロセス全体が殺され、アクティビティが占めるリソースも解放されます. 
実はandroidのメカニズムはユーザーがアプリケーションを完全に終了できないことを決定して、あなたのアプリケーションが最も長い間使われたことがない時、
Android自体がアプリケーションを閉じることにします.
終了するには、次のようにします.
ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);   
am.restartPackage(getPackageName());

Androidmanifestでxmlに権限を追加