1. 程式人生 > >Handler與Context的記憶體洩漏

Handler與Context的記憶體洩漏

  • Application:Android中的應用程式單例類,在Activity和Service中可以使用getApplication()獲得這個單例,通過context.getApplicatonContext()可以獲取到應用全域性的Context例項。
  • Activity/Service:這兩個都時ContextWrapper的之類,可以在這兩個類中使用getBaseContext()獲取到他們的例項,不同的Activity和Service例項,獲取到的Context是獨立的。
  • BroadcastReceiver:BroadcastReceiver本身不是Context的子類,而是在回撥函式onReceiver() 中由Android框架傳入一個context的例項。系統傳入的context經過功能裁剪,不能呼叫registerReceiver() 和bindService() 方法。
  • ContentProvider:與BroadcastReceiver類似,ContentProvider也不是Context的子類,也是在建立時由系統傳入Context的例項,所有可以再ContentProvider中使用getContext()獲取到Context。如果ContentProvider與呼叫者在相同的應用程序中,那麼getContext()將返回應用全域性唯一的Context例項。如果是在其他程序呼叫ContentProvider,那麼ContentProvider將持有自身所在程序的Context例項。