Hannula started playing ice hockey with Finnish team TPS. He is a hard-working and quick player with very good skating abilities. He is intense, works hard and is dangerous around the opponent's net. Hannula was drafted in the 2002 NHL Entry Draft by Minnesota Wild with their 9th choice, 269th overall selection. During his career, he has played for three different hockey teams in the Stockholm area: AIK Hockey, Djurgårdens IF and Hammarby IF. He also tried playing in the United States for the Houston Aeros in the American Hockey League during the season 2003–04, totalling 27 points in 67 regular season games. During the semifinal game in the 2006 World Championships in Riga, Latvia, against Canada, Hannula cross-checked the Canadian player Sidney Crosby to the neck and head area when Crosby was celebrating a goal he just had scored. Hannula was immediately suspended for the final game against Czech Republic, and later the IIHF Disciplinary Committee extended his suspension to the first four games of the 2007 World Championships in Moscow, Russia, plus a fine of 5,000 euro. The Swedish club HV71 signed Hannula from Malmö Redhawks in April 2005, for three years. He played for the club in one season and started the 2006–07 season successfully. Although, on November 13, 2006, HV71's general manager Fredrik Stillman announced through the club's web site that Hannula will take an indefinite break from ice hockey due to personal reasons. One week later, November 20, it was noted that he participated in a training session with the Stockholm-based club Vallentuna BK, where Hannula's younger brother played at the same time. On December 1, HV71's chairman Hans-Göran Frick announced that the club let Hannula go and broke his contract, which had one year left. Hannula signed on December 19 with the Russian club Lokomotiv Yaroslavl in the Russian Super League. After his first season in RSL, scoring 15 points in 23 games, Hannula signed with SKA Saint Petersburg for one year. According to media, the contract was worth approximately 770,000 euro after tax deductions. After an unsuccessful season, scoring 14 points in 46 games, he signed with HC CSKA Moscow in June 2008. Hannula signed a short-term contract with Djurgårdens IF in December 2009 when Djurgården temporarily lost three players, Daniel Brodin, Jacob Josefson and Marcus Krüger, to the World Junior Hockey Championship. He had previously practiced with Djurgården's J20 team before signing on for the senior team. After his stint at Djurgården he moved on to KHL team Salavat Yulaev. Hannula played a total of 13 games, scoring 3 goals and 10 points. He moved on to league rival Metallurg Magnitogorsk for the 2010–11 KHL season; however, he was able to play only one game for the team due to an injury. His contract was terminated and he spent the rest of the 2010 fall rehabilitating. Hannula signed on again for Djurgården in the beginning of January 2011, a contract that expired at the end of the 2010–11 Elitserien season. On 30 August 2011, Hannula signed a contract of unknown duration with Modo Hockey of the Swedish Elitserien. The contract ended on 16 October, one day aftera game against Luleå HF which ended 3–1 in Modo's favour. Hannula recorded two goals and one assist in that game, but after just two goals in twelve games he was not expected to stay with the team. However, on 17 October 2011, Hannula extended his contract with Modo to expire on 5 November. On 21 November 2011, the SM-liiga team Espoo Blues announced having signed the forward for the current season.
Off the ice
Hannula has a younger brother, Ronnie, who is seven years younger than Mika and is also a hockey player. Despite having been born in Sweden, Mika Hannula has a Finnish name, since his father is from Finland.