0

私のアプリにTwitter統合を実装しているときに、Eclipseデバッガーの次の奇妙な点を発見しました。これを引き起こしているのは何ですか?

このAsyncTaskを使用して、twitter4j3.0.3を使用してtwitterからリクエストトークンを取得しています。

    public class TwitterRequestAsync extends AsyncTask<Void, Void, RequestToken> {

        private Context context;

        public TwitterRequestAsync(Context context) {

            this.context = context;
        }

        @Override
        protected RequestToken doInBackground( Void... params ) {

            Twitter twitter = getTwitter();     // getTwitter() is in enclosing class
            try {
                RequestToken token = twitter.getOAuthRequestToken();
                return token;
            }
            catch (TwitterException e) {
                Log.e( TAG, e.getMessage(), e );
                return null;
            }
        }

        @Override
        protected void onPostExecute( RequestToken result ) {

            super.onPostExecute( result );
            if ( result != null ) {
                // stuffs concerning request token here
            }
        }

    }

このコードをデバッグすると、getOAuthRequestToken()が実行されたときに例外がスローされ、デバッガーが実行を示している次の行がcatch句にあるように見えます。nullを返します。

ただし、onPostExecute(...)に返される結果は有効な要求トークンであるため、デバッガーは奇妙なことを実行しています。プロジェクトをクリーンアップし、Eclipseを何度も再起動しましたが、この動作は変わりませんでした。私は壊れていますか?

4

2 に答える 2

1

これは既知の問題です。DalvikVMに問題がある可能性があるようです。メソッドの最後のreturnステートメントは、デバッガーで実行するように示されています。

doInBackground本体を次のように変更します。

        @Override
        protected RequestToken doInBackground( Void... params ) {

            Twitter twitter = getTwitter();
            RequestToken token = null;
            try {
                token = twitter.getOAuthRequestToken();
            }
            catch (TwitterException e) {
                Log.e( TAG, e.getMessage(), e );
            }
            return token;
        }

実行が期待どおりに進行しているように見せます。

さらに古い言及へのリンクを含む問題の古い言及については、https://groups.google.com/forum/?fromgroups =#!topic / android-developers/DEU6JmdyFyMを参照してください。誰かがついにhttps://code.google.com/p/android/issues/detail?id=34193でこれに関する問題を作成しました。

于 2013-03-24T22:13:47.210 に答える
1

自己回答のメモとして、これは既知の問題です。私はそれ(および他の癖)がDalvikドキュメントに文書化されていることを指摘したいと思いました。公式ではあるが未加工の形式、または非公式であるがフォーマットされた形式で見つけることができます。「既知の問題と制限」までスキップしてください。

ドキュメントがもっと目立つようになったらいいのにと思います。

于 2013-03-25T17:48:23.947 に答える