2013-06-27 61 views
16

Tôi chỉ mới bắt đầu với Android và đang đọc BroadcastReceiver. Vì MainActivity đã được sử dụng chỉ để có được thời gian báo động trong vài giây, nó khiến tôi suy nghĩ liệu các tệp XML bố trí có phải cho mọi hoạt động trong Android hay không. Ý tôi là, có thể có một ứng dụng khi được khởi chạy, không hiển thị chế độ xem, nhưng thiết lập thành công bộ thu?Phải mọi hoạt động đều có bố cục?

+1

Cảm ơn, nhưng tôi không nghĩ rằng đây là một thảo luận chung, hoặc có khả năng tạo ra các ý kiến ​​chủ quan. Tôi hỏi liệu một điều như thế có thể xảy ra hay không. Đoán tôi sẽ xóa "Thảo luận chung" khỏi bài đăng của tôi. – dotslash

+1

Tôi nghĩ bạn đang nghĩ về một dịch vụ ... – EMarci15

+0

@ EMarci15: Cảm ơn! Có vẻ như tôi đã có rất nhiều bài đọc để làm tối nay! :) – dotslash

Trả lời

27

Câu trả lời là có. Các hoạt động không cần phải có giao diện người dùng. Nó được đề cập trong tài liệu, ví dụ:

Hoạt động là một điều tập trung duy nhất mà người dùng có thể thực hiện. Hầu mọi hoạt động tương tác với người sử dụng [...]

(thấy http://developer.android.com/reference/android/app/Activity.html)

liên quan SO câu hỏi: https://stackoverflow.com/a/12817384/534471

Để ví dụ hiển thị một Toast từ một Hoạt động mà không cần bố trí bạn sẽ xác định các hoạt động trong biểu hiện của bạn như sau:

<activity 
    android:name=".MainActivity" 
    android:theme="@android:style/Theme.NoDisplay"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

Mã này sẽ trông như thế này:

public class MainActivity extends Activity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     Toast.makeText(this, "I'm alive", Toast.LENGTH_LONG).show(); 
     finish(); 
    } 
} 
+0

OK. . . Để bắt đầu, chúng ta hãy chỉ nói rằng người dùng nhấp vào ứng dụng và thông báo Toast được hiển thị (có thể sau 5 giây). Nhưng nó phải là một hoạt động, không phải (như những người khác đã đăng), một dịch vụ. Khả thi? – dotslash

+0

Có một Bánh mì nướng sẽ được hiển thị từ một Hoạt động nhưng tại sao sau 5 giây? Không có người dùng nào muốn chờ 5 giây ... –

+0

Có nhiều cách khác để lên lịch Báo thức. Nếu ứng dụng đã có thời gian báo thức, bạn không cần phải bắt đầu Hoạt động nhưng thực sự không nói gì bạn đang cố gắng đạt được. –

3

Tôi nghĩ bạn cần hiểu thêm về what is context trong Android. BroadcastReceiver khác với Hoạt động, không cần lạm phát bố cục.

+0

Hmmm. . . Thú vị liên kết. Cám ơn vì đã chia sẻ! – dotslash

+0

Thật là một liên kết tuyệt vời! Tôi ước gì tôi tìm thấy liên kết đó khi tôi bắt đầu với Android! Một sự hiểu biết tốt về Bối cảnh là rất quan trọng, và đối với tôi là một trong những điều mơ hồ nhất để cố nắm bắt. – Emmanuel

8

Bạn có thể triển khai một Hoạt động không có giao diện người dùng. Trong tệp kê khai, bạn có thể chỉ định android:theme="@android:style/Theme.NoDisplay". Hãy xem this

Bạn cũng có thể triển khai Dịch vụ không có bất kỳ giao diện người dùng nào để bạn không cần lạm phát bố cục. Dịch vụ chỉ chạy trong nền và không có lượt xem. Hãy xem Android TrainingAPI Guide để tìm hiểu thêm về Dịch vụ

+1

Cảm ơn bạn! Tôi sẽ sớm đọc về Dịch vụ. :) – dotslash

+0

bạn được chào đón. – Dulanga

+1

Điều NoDisplay này đã lưu lại ngày của tôi! – Couitchy

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