It would seem to me that mobile applications could reduce network traffic by hardcoding the server's public key into the app.
The idea being that they could then encipher a secret to share with the API using the public key.
We then would seemingly not need to validate the server-side identity, because only the private key holder should be able to decrypt the message.
The conversation could then switch to symmetric encryption immediately, since both sides have knowledge of the key.
Apart from key management issues, in the event of an unrelated private key compromise, is this otherwise secure? What weaknesses, if any, are there for this scheme vs. traditional TLS handshake?