有问题的android

时间:2013-05-15 20:59:16

标签: android programmable-completion

请看下面的代码: 当我使用这样的处理程序时,我收到一个警告(此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;

1 个答案:

答案 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
        }