0

请看下面的代码:当我使用这样的处理程序时,我收到一个警告(这个处理程序类应该是静态的,否则可能会发生泄漏)有人能告诉我最好的方法是什么吗?

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;
4

1 回答 1

0

我相信你已经回答了你自己的问题。

您已经在函数内放置了final一个带有new关键字的缓存处理程序。

这是编译器警告你不要这样做。cacheImages()可以多次调用,所以不要这样做!

cacheImages()您可以在主要活动范围内声明函数的处理程序之外吗?

编辑:示例

            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
        }
于 2013-05-15T21:11:01.347 回答