我打算写一个实用工具类,通过互联网发布消息来报告错误消息。因此它可以被任何类和应用程序中的任何位置使用。我会这样做:
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 :(得分: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);