我们应该在实用程序类中有一个静态最终处理程序

时间:2017-04-06 13:08:27

标签: android

我打算写一个实用工具类,通过互联网发布消息来报告错误消息。因此它可以被任何类和应用程序中的任何位置使用。我会这样做:

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.
            }
        });
    }
}

我是否应该这样做,我认为这不是一个好主意,有人可以告诉我如何改进此代码。

2 个答案:

答案 0 :(得分:0)

在我看来,你错过了extension MKMapView { func removeAllOverlay(){ for overlay:MKOverlay in self.overlays { self.remove(overlay) } } } 的概念。你根本不需要处理程序,至少在你提到的用例中。

如果你想稍后发布一些动作 - 处理程序是合适的。

如果您希望在其他线程上运行代码时在UI线程上执行某些操作,那么处理程序将是合适的。

但在您的使用案例中,您只需执行一些操作,根本不需要与Handler进行交互。

答案 1 :(得分:-1)

这就是我创建单身人士的方式:

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.
            }
        });
    }
}

在Applciation类或主Activity类中初始化一次:

Reporter.initialize();

在任何地方使用它:

Reporter.getSharedInstance().report(e);