What worked for me is simply reading interesting things. You need an intermediate level of proficiency before that. Unfortunately, the language this works best for is English because e.g. if you want to learn about something on Wikipedia, the English article usually contains more info than the others.
This was a problem when I was learning German, I could hardly find anything interesting I could not find three times as much interesting material about in English. Unfortunately I am not much interested in poetry or literature, if I was it would have been much easier. I ended up with fairly desperate choices like 50 Cents autobio in German (Dealer, Rapper, Millionär), which was at least fun because of the complete weirdness of expressing one culture in the language of another.
You probably need to find something that you find interesting and the best sources are in Mandarin. History of gung fu?
I've been wanting to learn Mandarin Chinese for years now and just recently I wrote a small website to help me practise.1 All of the exercises are gap sentences that require you to type the correct answer before you can move on. I chose this kind of exercise because of the convincing evidence for the spacing effect and the testing effect.
Knocking through a bunch of exercises every day feels efficient but it's not exactly fun and I put in less time than I should. I've found two things that help with this: setting small and achievable goals, and reading short stories once I'm proficient with the vocabulary. And if there are two ways to make practicing more fun, there gotta be a lot more that I haven't thought about. So, how do I make myself work harder? Are there are any of the so called Dark Arts that are more than hearsay and could work in my favor? How do you people out there learn foreign languages and how do you keep yourself from giving up or slowing down? Do you use the pomodoro technique?
Cheers, David.
[1]: https://talentsrs.com
Edit: more on -> move on.