BackgroundTask should reference context instead of Activity
Move cancel logic into BackgroundTask