2011-04-07 112 views
0

我正在使用一个类别&界面来计算/更新日期&时间。在Android OS版本2.2及更高版本上更新背景上的日期和时间时出现异常

接口:

public interface CListener { 

    public void updateClock(String date, String time); 

} 

类:

public class CManager { 

    private CListener mListener = null; 

    private static Timer mTimer = null; 

    private static String mDateData = ""; 

    private static String mTimeData = ""; 

    private static CManager _instance = null; 

    private CManager() { 

     if (mTimer == null) { 

      mTimer = new Timer(); 
      mTimer.schedule(new TimerTask() { 
       @Override 
       public void run() { 

        updateTime(); 
       } 

      }, 0, 1000); 
     } 
    } 


    public static CManager getInstance() { 
      if(_instance == null) { 
      _instance = new CManager(); 
      } 
      return _instance; 
     } 


    public void setClockListener(ClockListener listener) { 
     this.mListener = listener; 
    } 


    public void updateTime() { 


      Date d = new Date(); 

         // Calculating the date , month ,day ,hr ,min from Date d 

      mListener.updateClock(mDateData, mTimeData); 

      // mDateData -> Calculated combined Date 
      // mTimeData -> Calculated combined time 


    } 


    public String getDate() { 
     return mDateData; 
    } 


    public String getTime() { 
     return mTimeData; 
    } 
} 

我从一个活动

public class SampleActivity extends Activity{ 


private CManager mCManager = null; 

public void onCreate(Bundle savedInstanceState) { 

super.onCreate(savedInstanceState); 

mCManager = CManager.getInstance(); 

} 
调用CManager类0

上述代码工作正常&更新日期&时间与Android操作系统版本1.6到2.1。

但是,相同的代码给Android 2.2版的以下错误。上面的&。

04-08 03:57:39.269: ERROR/AndroidRuntime(419): FATAL EXCEPTION: Timer-0 
04-08 03:57:39.269: ERROR/AndroidRuntime(419): java.lang.NullPointerException 
04-08 03:57:39.269: ERROR/AndroidRuntime(419): at com.app.CManager.updateTime(CManager.java:144) 
04-08 03:57:39.269: ERROR/AndroidRuntime(419):  at com.app.CManager$1.run(CManager.java:54) 
04-08 03:57:39.269: ERROR/AndroidRuntime(419):  at java.util.Timer$TimerImpl.run(Timer.java:284) 
04-08 03:57:39.301: WARN/ActivityManager(70): Force finishing activity com.app/.SampleActivity 

问题的可能原因是什么? 是否有任何替代/解决此问题。

请提供您的输入/示例代码。

在此先感谢。

亲切问候,

CB

回答

0

你有没有设置mListener?

你应该在任何情况下检查(mListener!= NULL),因为后台线程在构造函数,这意味着可以尝试CManager.getInstance和setClockListener()

作为电话之间的执行产生你正在使用一个单身人士,可能会更好地支持多个CListeners而不是一个。

希望这有助于

菲尔Lello

相关问题