2017-04-06 9 views
-2

私はインターネット経由でメッセージを投稿してエラーメッセージを報告するためのユーティリティクラスを作成します。そのため、クラスやアプリケーションのどこでも使用できます。そして、私は、このようにするつもりです:ユーティリティクラスに静的な最終ハンドラを用意する必要があります

public class Reporter { 
    private static final Handler REPORTER_HANDLER = new Handler(); 

    private Reporter(){} 

    public static void report(final Exception e) { 
     REPORTER_HANDLER.post(new Runnable() { 
      @Override 
      public void run() { 
       // Using HttpURLConnection to post the message to server. 
      } 
     }); 
    } 
} 

私はこのように行う必要があり、私は誰かがこのコードを改善する方法を私に伝えることができ、それは良いアイデアではないと思います。

+0

「ハンドラー」はなぜ必要なのですか? – azizbekian

+0

あなたは 'Handler'の目的を理解していないようです。 – earthw0rmjim

+0

@Tan Tran:ハンドラーなしでシングルトンクラスを使用してこれを行うことができます。サーバーにデータを投稿するだけなので – Stallion

答えて

-1

これは私がシングルトンを作成する方法である:あなたのApplciationクラスまたはメインのActivityクラスで一度初期化し

public class Reporter { 
    private static Reporter mReporter; 

    public static initialize(){ 
     mReporter = new Reporter(); 
    } 

    public static Reporter getSharedInstance(){ 
     return mReporter; 
    } 

    public void report(final Exception e) { 
     new Handler().post(new Runnable() { 
      @Override 
      public void run() { 
       // Using HttpURLConnection to post the message to server. 
      } 
     }); 
    } 
} 

を:

Reporter.initialize(); 

はどこでも、このようにそれを使用します。

Reporter.getSharedInstance().report(e); 
0

をあなたにはHandlerのコンセプトがありません。少なくとも、あなたが言及するユースケースでは、ハンドラはまったく必要ありません。

後で何らかのアクションを投稿したい場合は、ハンドラが適切です。

コードが他のスレッドハンドラで実行されているときにUIスレッドで何らかのアクションを実行したい場合は、適切なハンドラがあります。

しかし、あなたの使用の場合は、何か操作を実行するだけで、Handlerとやりとりする必要はありません。

関連する問題