Method Ordering - Readability / Maintainability What is your opinion on method ordering?

Should it be public methods at the top followed by private methods?

or

Should it be linear order so that methods calling methods stack on top of each other?

Which do you think is better for maintainability / readability?

Examples

Public first:

public class Main {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        //
    }

    @Override
    protected void onResume() {
        startUploadActivity();
    }

    @FromXML
    public void onSignInClick(View button){
        startAuthorisationForYouTube();
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if(resultIsASignInAttempt(requestCode) &amp;&amp; signedInSucccessfully(resultCode)){
            dealWithResult(data);
        } else
        if(resultIsASignInAttempt(requestCode) &amp;&amp; signInFailed(resultCode)){
            startRefusalActivity();
        }
    }

@Override
protected void onStop() {
    super.onStop();
}


    private void startUploadActivity() {
        //
    }

    private void startAuthorisationForYouTube() {
        //
    }

    private static boolean resultIsASignInAttempt(int requestCode) {
        //
    }

    private static boolean signedInSucccessfully(int resultCode) {
        //
    }

    private static boolean signInFailed(int resultCode) {
        //
    }

    private void dealWithResult(Intent data) {
        //
    }

    private static Tokens getAccessTokens(Intent data) {
        //
    }

    private void startRefusalActivity() {
        //
    }
}


Calling order:

public class Main {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        //
    }

    @Override
    protected void onResume() {
            startUploadActivity();

    }

    private void startUploadActivity() {
        //
    }

    @FromXML
    public void onSignInClick(View button){
        startAuthorisationForYouTube();
    }

    private void startAuthorisationForYouTube() {
        //
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if(resultIsASignInAttempt(requestCode) &amp;&amp; signedInSucccessfully(resultCode)){
            dealWithResult(data);
        } else
        if(resultIsASignInAttempt(requestCode) &amp;&amp; signInFailed(resultCode)){
            startRefusalActivity();
        }
    }

    private static boolean resultIsASignInAttempt(int requestCode) {
        //
    }

    private static boolean signedInSucccessfully(int resultCode) {
        //
    }

    private static boolean signInFailed(int resultCode) {
        //
    }

    private void dealWithResult(Intent data) {
        //
    }

    private static Tokens getAccessTokens(Intent data) {
        //
    }

    private void startRefusalActivity() {
        //
    }

@Override
protected void onStop() {
    super.onStop();
}
}
I don't have strong feelings, but I keep methods in calling order.  The argument for "public up top" seems to be that someone wants to see what methods they can call on an Object as opposed to what a particular method does.  However in today's world, this is generally accomplished by an IDE or javadoc.  If that's not possible, the time lost jumping through a file looking for the public methods is minimal.

When I'm looking at code for a class I haven't written, I'm inevitably trying to find out how it works.  And when reading the content of a method, jumping to private methods becomes more important, and slightly more time is lost if the class isn't ordered for callability.