原帖地址http://supportforums.blackberry.com/t5/Java-Development/problem-about-Timer/td-p/372342
奇怪的timer问题,timer运行的时候,上边的值怎么也传送不进去.Demo.isrun一直是初始定义的那个值.
JDE4.2下倒是正常的返回了true or false,不知道是什么原因.
import java.util.Timer; import java.util.TimerTask; import net.rim.blackberry.api.phone.phonelogs.CallLog; import net.rim.blackberry.api.phone.phonelogs.PhoneLogListener; import net.rim.blackberry.api.phone.phonelogs.PhoneLogs; import net.rim.device.api.ui.UiApplication; import net.rim.device.api.ui.component.LabelField; import net.rim.device.api.ui.container.MainScreen; public class Demo extends UiApplication { public static boolean isrun; public static void main(String[] args) { Demo theApp = new Demo(); theApp.enterEventDispatcher(); } public Demo() { pushScreen(new testscreen()); } } class testscreen extends MainScreen { public testscreen(){ super(); LabelField title = new LabelField("test",LabelField.ELLIPSIS|LabelField.USE_ALL_WIDTH); setTitle(title); final Timer time1 = new Timer(); PhoneLogListener loglisten = new PhoneLogListener(){ public void callLogAdded(CallLog cl) { System.out.println("first isrun!!!!!!!!!!!="+Demo.isrun); Demo.isrun = true; System.out.println("last isrun!!!!!!!!!!!!="+Demo.isrun); time1.scheduleAtFixedRate(new TimerMainEvent(),100,1000); } public void callLogUpdated(CallLog cl, CallLog oldCl) { System.out.println("&&&&&&&&&&&&&&&&&&&update&&&&&&&&&&&&&&&&&&"); } public void callLogRemoved(CallLog cl) { System.out.println("&&&&&&&&&&&&&&&&&&&remove&&&&&&&&&&&&&&&&&&"); } public void reset() { System.out.println("&&&&&&&&&&&&&&&&&&&reset&&&&&&&&&&&&&&&&&&"); } }; PhoneLogs.addListener(loglisten); } } class TimerMainEvent extends TimerTask { public TimerMainEvent() { } public void run() { System.out.println("run!!!!!!!!!!!!!!!!!!!!!!!!"+Demo.isrun); } }