Tôi có một ứng dụng sử dụng Chrome custom tabs
để mở một số liên kết, tôi cần phải có sự kiện mỗi giây trong suốt thời gian người dùng ở lại trên Chrome hoặc biết thời gian anh ở lại trên Chrome. Đối với tôi, cách duy nhất để làm điều đó là sử dụng Service
. Có thể làm điều đó khác đi không?Nghe sự kiện tiến độ tab tùy chỉnh chrome
Trả lời
Để triển khai các tab tùy chỉnh chrome tôi đã theo dõi this hướng dẫn, github link.
Giải pháp của tôi về cơ bản dựa trên boolean và System.currentTimeMillis().
Bước - 1: Khai báo biến toàn cục hai lớp,
private boolean isCustomTabsLaunched = false;
private long customTabsEnterTime;
Bước - 2: Set giá trị cho ở trên để biến khi launchUrl.
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.d(TAG, "FloatingActionButton");
// Launch Chrome Custom Tabs on click
customTabsIntent.launchUrl(CustomTabsActivity.this, Uri.parse(URL));
isCustomTabsLaunched = true;
customTabsEnterTime = System.currentTimeMillis();
Log.d(TAG, "customTabsEnterTime = " + customTabsEnterTime);
}
});
Bước - 3: Tính lại thời gian trong phương pháp onResume.
@Override
protected void onResume() {
super.onResume();
Log.d(TAG, "onResume");
if (isCustomTabsLaunched) {
isCustomTabsLaunched = false;
calculateStayTime();
}
}
private void calculateStayTime() {
long customTabsExitTime = System.currentTimeMillis();
Log.d(TAG, "customTabsExitTime = " + customTabsExitTime);
long stayTime = (customTabsExitTime - customTabsEnterTime)/1000; //convert in seconds
Log.d(TAG, "stayTime = " + stayTime);
}
Để làm cho mã mạnh mẽ hơn bạn có thể muốn lưu trữ isCustomTabsLaunched boolean và customTabsEnterTime dài trong tùy chọn hoặc cơ sở dữ liệu như vậy trong mọi trường hợp hai params những được tiêu huỷ như hoạt động của bạn có thể nhận được tiêu diệt trong nền nếu nghỉ sử dụng trong thời gian dài thời gian trong tab tùy chỉnh chrome.
Cảm ơn bạn đã trả lời @Chitrang, vấn đề với giải pháp của bạn là nếu bạn giết hoạt động trong khi điều hướng chrome, 'onResume()' sẽ không bao giờ gọi và bạn sẽ mất dữ liệu:/ – Dichoben
Làm thế nào bạn sẽ giết Hoạt động? Hoặc bạn có nghĩa là giết các ứng dụng trong trường hợp đó không có giải pháp sẽ làm việc. – Chitrang
Tạo lớp YourBroadCastReceiver của bạn như sau
public class YourBroadCastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.i("Called every 60 seconds","called");
}
}
Sau khi khởi động tab tùy chỉnh của bạn tạo thành công Alarm PendingIntent sẽ kích hoạt YourBroadCastReceiver một lần mỗi 60 giây.
// Retrieve a PendingIntent that will perform a broadcast
Intent repeatingIntent = new Intent(context,
YourBroadCastReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(
context, _pendingIntentId, alarmIntent, 0);
AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
// Set the alarm to start at 10:00 AM
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
manager.setRepeating(AlarmManager.RTC_WAKEUP,
calendar.getTimeInMillis(), 60 * 1000, // repeat for every 60 seconds
pendingIntent);
sau khi đóng tab tùy chỉnh của bạn không bao giờ quên để hủy bỏ PendingIntent bạn
PendingIntent.getBroadcast(
context, _pendingIntentId, alarmIntent, 0).cancel();
- 1. Chrome cháy sự kiện nghe nhiều lần
- 2. Đóng tab tùy chỉnh chrome
- 3. Tab tùy chỉnh của Chrome và cordova
- 4. WebView và Tab tùy chỉnh của Chrome
- 5. XMLHttpRequest trong google-chrome không báo cáo sự kiện tiến
- 6. Kết nối dữ liệu với trình nghe tùy chỉnh trên chế độ xem tùy chỉnh
- 7. Sự kiện Java và trình nghe sự kiện
- 8. Sự kiện tùy chỉnh bong bóng xuống
- 9. Sự kiện tùy chỉnh xương sống
- 10. Làm cách nào để thêm tiêu đề HTTP tùy chỉnh vào tab tùy chỉnh của Chrome?
- 11. Sự kiện Bubbling cho Sự kiện tùy chỉnh trong WPF?
- 12. phi tiêu cách tạo, nghe và phát ra sự kiện tùy chỉnh?
- 13. Làm thế nào để bạn gửi và nghe các sự kiện tùy chỉnh trong Polymer?
- 14. Nghe sự kiện UITouch cùng với UIGestureRecognizer
- 15. Android - trình nghe sự kiện
- 16. Có chế độ xem nghe sự kiện thu thập
- 17. Làm cách nào để đặt các điểm ngắt của trình nghe sự kiện trong tab Yếu tố của Chrome?
- 18. Sự kiện âm thanh HTML5 'tiến độ' không kích hoạt
- 19. Sự kiện tùy chỉnh Polymer 1.0
- 20. Sự kiện tùy chỉnh trong HTML, Javascript
- 21. Sự kiện tùy chỉnh không kích hoạt
- 22. Sự kiện tùy chỉnh trong C++?
- 23. Câu hỏi về sự kiện tùy chỉnh
- 24. Trình nghe sự kiện NHibernate
- 25. Xem nghe sự kiện - Javascript
- 26. Trình nghe sự kiện localStorage không kích hoạt trong Chrome cho tệp cục bộ
- 27. sự kiện tùy chỉnh căn cứ hỏa lực
- 28. đo độ trễ trong tab mạng Chrome
- 29. Tạo trình nghe tùy chỉnh Trong Java
- 30. Làm tùy chỉnh tab nút
Có vẻ như bạn muốn nghe cho một sự kiện được phát sinh khi Tab Tuỳ chỉnh được đóng lại. Điều này có đúng không? – ade
Có, nó có thể hoạt động nếu tôi có tổng thời gian phiên của người dùng trong cuộc gọi lại, nhưng tốt nhất là phải có sự kiện mỗi lần X. – Dichoben