请看下面的代码: 当我使用这样的处理程序时,我收到一个警告(此Handler类应该是静态的,否则可能会发生泄漏) 有人能告诉我这样做的最佳方式是什么?
private void cacheImages() {
try {
// The handler is inside the function because
// normally this function is called once.
final Handler cacheHandler = new Handler() {
public void handleMessage(Message message) {
switch (message.what) {
case ThreadState.STARTED:
cachingDialog.setMax(message.arg1);
break;
case ThreadState.PROGRESSION_UPDATE:
cachingDialog.setProgress(message.arg1);
break;
答案 0 :(得分:0)
我相信你已经回答了自己的问题。
您已在函数内部使用final
关键字的高速缓存处理程序放置new
。
这是编译器警告你不要这样做。 cacheImages()
可以被多次调用,所以不要这样做!
您是否可以在主要活动范围内声明cacheImages()
函数的处理程序OUTSIDE?
编辑:示例
final Handler cacheHandler = new Handler() {
public void handleMessage(Message message) {
switch (message.what) {
case ThreadState.STARTED:
cachingDialog.setMax(message.arg1);
break;
case ThreadState.PROGRESSION_UPDATE:
cachingDialog.setProgress(message.arg1);
break;
}
}
private void cacheImages() {
try {
... do stuff
}
catch (Exception e) {
... do stuff
}