2011-11-01 43 views
10

Tôi có nút có tên Check In. Mục tiêu của tôi là nhấp để thay đổi văn bản và bắt đầu tính thời gian. Bộ hẹn giờ phải dừng lại ở lần nhấp tiếp theo. Nó sẽ cho thời gian thực hiện giữa hai lần nhấp nút.Android - Để đo thời gian giữa hai lần nhấp nút

+0

nghi ngờ của tôi liên quan đến việc sử dụng dịch vụ Báo thức và hẹn giờ bình thường trong java. – siraj

Trả lời

42

Trên nhấp chuột đầu tiên tạo ra một biến:

long startTime = System.currentTimeMillis(); 

Sau đó, ngày thứ hai nhấp chuột, bạn có thể tính toán sự khác biệt:

long difference = System.currentTimeMillis() - startTime; 

difference/1000 sẽ cung cấp cho bạn sự khác biệt chỉ trong vài giây. Hi vọng điêu nay co ich.

+17

Tôi sẽ đề nghị sử dụng 'SystemClock.elapsedRealtime()' thay vì 'System.currentTimeMillis()'. Tài liệu nói: 'System.currentTimeMillis()' là đồng hồ "tường" tiêu chuẩn thể hiện mili giây kể từ kỷ nguyên. Đồng hồ treo tường có thể được thiết lập bởi người dùng hoặc mạng điện thoại, do đó, thời gian có thể nhảy lùi hoặc chuyển tiếp không thể đoán trước. 'elapsedRealtime()' và 'elapsedRealtimeNanos()' trả về thời gian kể từ khi hệ thống được khởi động. Đồng hồ này được đảm bảo là đơn điệu và tiếp tục đánh dấu ngay cả khi CPU ở chế độ tiết kiệm năng lượng, do đó, là cơ sở đề xuất cho thời gian định thời gian chung. – vtuhtan

0

Bạn có thể sử dụng System.currentTimeMillis() (hoặc tạo ví dụ Date hoặc GregorianCalendar mới) khi nhấp chuột.

Lưu ở đâu đó. Trong lần nhấp tiếp theo, hãy làm như vậy. Sau đó so sánh thời gian.

13

Tôi nghĩ thực hành tốt hơn là sử dụng System.nanoTime() thay vì System.currentTimeMillis(), vì currentTimeMillis() dựa vào thời gian mà đồng hồ của hệ thống được đặt thành, có thể thay đổi. Tuy nhiên,

nanoTime() được thiết kế để đo thời gian trôi qua theo JavaDoc.

Các vấn đề liên quan