2009-09-08 28 views
7

Tôi biết Mô hình hoạt động của Android hơi khác so với những gì tôi thường coi là "ứng dụng".(android) Làm thế nào để làm một cái gì đó trên ứng dụng "khởi động"?

Tôi muốn làm điều gì đó (trong trường hợp này, hãy kiểm tra một số thông báo trên máy chủ và hiển thị chúng nếu có) khi ứng dụng của tôi được "khởi chạy". Một cách tốt để thực hiện điều này là gì?

Tôi có thể không muốn làm điều đó trong OnCreate của một hoạt động, vì mỗi hoạt động có thể được tạo bất kỳ số lần nào - mã sẽ được gọi thường xuyên hơn mức cần thiết.

Ứng dụng này cũng có nhiều điểm nhập - tôi có phải nhân đôi séc trong từng hoạt động không? Điều tôi đang làm là thiết lập mã này bên trong đối tượng Application, cùng với một lá cờ theo dõi xem nó đã được gọi hay chưa - và chỉ gọi nó từ onCreate() của mỗi Activity.

Có cách nào hay hơn "đúng" để thực hiện việc này không?

Trả lời

9

Các đúng, Android đã được phê duyệt cách để làm điều này là:

  • Tạo riêng android.app.Application lớp
  • Override bạn phương pháp onCreate
  • Trong AndroidManifest.xml, thay đổi android:name thuộc tính của application phần tử vào tên của lớp học
  • Bây giờ, bất cứ khi nào ứng dụng của bạn được "bắt đầu" (bất kỳ một trong các hoạt động của bạn được bắt đầu cho f lần đầu tiên và không có trường hợp nào khác còn sống) onCreate sẽ được gọi.

Bạn cũng có thể tìm thấy phương pháp onTerminate hữu ích.

+0

Cảm ơn - đó có lẽ là những gì tôi cần, tôi sẽ thử. –

+0

Whoa ... Tôi không bao giờ nhận ra bạn có thể làm điều đó. Làm cho cảm giác bây giờ mà tôi biết, mặc dù ... –

0

Bạn có thể kiểm tra xem gói có được chuyển đến onCreate()null không?

Nó không phải null "Nếu hoạt động này đang được tái khởi sau khi trước đó bị đóng cửa ..."

0

Có lẽ không có hại trong đặt nó trong onCreate; Activity chỉ thực sự bị phá hủy khi HĐH cần RAM cho một thứ khác, chứ không phải khi người dùng chuyển sang ứng dụng khác.

EDIT: Bạn cũng có thể có số Service that runs when the device gets booted up. Đây có thể là một lựa chọn tốt hơn nếu bạn cũng muốn kiểm tra khi ứng dụng bắt đầu, vì bạn sẽ chỉ phải gọi context.startService từ Activity để chạy kiểm tra. Chỉ cần chắc chắn để ngăn chặn nó khi nó được thực hiện nếu bạn không cần nó để được kiên trì.

+1

Vâng, có một số trường hợp, khi onDestroy() được gọi để phản ứng lại một số hành động vô tội - như nhấn nút BACK hoặc thay đổi hướng của thiết bị (trừ khi được chỉ định rõ ràng khác). Và chỉ trong trường hợp sau, tham số Bundle được truyền vào onCreate() là NOT null. –

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