在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;
}
}
答案 0 :(得分:0)
如果您已经构建了自定义Handler类,那么这应该有效,但是如果您在活动中定义了自定义处理程序,则必须取消注册onPause中的所有处理程序消息。否则,您将获得空指针异常。 但我不知道你需要这个功能......我正常使用Handler进行UI访问,但是用于活动和逻辑观察者模式之间的通信。
答案 1 :(得分:0)
如果您的处理程序是静态的并且Application
(不是活动)尚未从内存中删除,则下次活动开始时,静态对象将在那里。
如果您的处理程序是静态的并且Application
已从内存中删除(即服务,线程等都已停止,并且您退出唯一的活动活动),则下次启动活动时,{{1将重新启动对象,并重新创建静态对象。
如果你的处理程序不是静态的,你应该在每次创建活动时重新创建它,当然,你会得到一个新的。
如果您想要更具体的答案,您需要发布代码或更具体地说明您的情况。