Battlegrounds is a reliable source of AP, win or lose, limited mostly by the amount of time it takes you to get a match.
Cyrodiil is highly variable. You can make excellent AP if your alliance is pushing hard and capturing objectives quickly, such as during an emp push. Or it can be a long slog if your alliance is struggling to defend or capture objectives.
Battlegrounds aren't good way to earn ap, you can duo capture 9 resources (with each yelding minimum 1500, usually more) in the same 15 min it takes to finish bg match earning about same amount of ap and then there is queue and loading screens...
In Cyro if you want to farm ap (not casually zerg surfing) you need to leech as much as you can, pay attention to map if keep ua, wait for a min, repairing walls (stacking healing done fasten the process) or capture/leech res then go for keep itself. Worth noticing in what period of time your faction cap the map and in what time losing it, you can earn a lot of ap for leeching and defending during these hours. Play solo or duo (more ap for kills). Coldfire ballistas good way to deal a lot of damage to group of players (in both defense and offence), thus getting a lot of ap for kills. Focus weak players, avoid the tanky ones (unless you overwhelm them), any fight lasting more than a min - waste of time, run away or suicide. Delve bonus might be useful if you know that you'll earn a lot of ap in next hour. As for healing: just slot illustrious healing and spam on zerg from time to time, would be enough (you won’t get ap for healing, if allies didn’t kill enemy players). Don’t forget to take quests at base, nice source of ap as well.