在onDestroy()onPause()之前创建的Activity中使用以前的Handler是否可以?

时间:2012-11-15 20:04:13

标签: android

在Activity的下一个生命周期中重用一个Handler对象是可以的吗,这个对象之前在之前的会话中创建过(在onPause,onDestroy()之前)?

就像我在Activity中创建一个Handler将它传播到其他地方的其他对象一样,Activity死了或暂停,然后重新开始并使用旧的处理程序?

    // In the oncreate() method I have this code to recreate handler every time
    // Then I set the handler to a static Global object 
    // Other Objects use the global object's static method to get 
    //fresh handler every timebefore calling sendMessage()

        /**
     * Set up handler 
     */     
    Handler h = new Handler(new Callback() 
    {           
        public boolean handleMessage(Message msg) 
        {
            handleServiceMessage(msg);
            return true;
        }
    }); 


    uiglobal = new UIGlobals(h);

UiGlobals被声明为

 private static UIGlobals uiglobal = null;

不确定上述方法是否正确..

我的GlobalUI类看起来像这样

    public class UIGlobals 
    {
         private static Handler handler = null; 
         public UIGlobals(Handler h)
        {
            handler = h;
        }   
        public static Handler getHandler()
        {
            return handler;
        }    
    }

2 个答案:

答案 0 :(得分:0)

如果您已经构建了自定义Handler类,那么这应该有效,但是如果您在活动中定义了自定义处理程序,则必须取消注册onPause中的所有处理程序消息。否则,您将获得空指针异常。 但我不知道你需要这个功能......我正常使用Handler进行UI访问,但是用于活动和逻辑观察者模式之间的通信。

答案 1 :(得分:0)

如果您的处理程序是静态的并且Application(不是活动)尚未从内存中删除,则下次活动开始时,静态对象将在那里。

如果您的处理程序是静态的并且Application已从内存中删除(即服务,线程等都已停止,并且您退出唯一的活动活动),则下次启动活动时,{{1将重新启动对象,并重新创建静态对象。

如果你的处理程序不是静态的,你应该在每次创建活动时重新创建它,当然,你会得到一个新的。

如果您想要更具体的答案,您需要发布代码或更具体地说明您的情况。