2010-04-06 37 views

Trả lời

12

Lớp android.app.Application là cơ sở tùy chọn để mở rộng và lưu trữ trạng thái toàn cầu của ứng dụng. Có nhiều cách khác để làm điều này, vì vậy hầu hết các ứng dụng không tùy chỉnh lớp này.

Hoạt động tuy nhiên là những gì xác định mọi giai đoạn chính của ứng dụng của bạn. Nó sẽ không thể xây dựng một ứng dụng mà không có hoạt động. Bạn sẽ có một lớp Hoạt động chính và điều này thực sự sẽ được xác định bằng 'hoạt động mở rộng'.

+0

Tôi không có nghĩa là mang tính thông thái nhưng ý của bạn là "Sẽ không thể xây dựng một ứng dụng không có hoạt động" ?. Tôi chỉ muốn hoàn toàn rõ ràng về điều này. – jcrowson

+0

Các hoạt động tốt là khối ứng dụng xây dựng. Giống như các trang cho một ứng dụng web. Bất kỳ ứng dụng nào cũng sẽ có ít nhất một (mặc dù bạn có thể có một Widget mà không có một ứng dụng mà tôi cho là). Ứng dụng của bạn sẽ cần một Activity entry point. –

+0

Vì vậy, bạn có thể bắt đầu các lớp mở rộng ứng dụng, tương tự như bắt đầu Hoạt động sử dụng mục đích? – jcrowson

5

Cách tốt nhất để thấy sự khác biệt sẽ được nhìn thấy nó là lớp phân cấp

Activity

java.lang.Object 
    ↳ android.content.Context 
     ↳ android.content.ContextWrapper 
      ↳ android.view.ContextThemeWrapper 
       ↳ android.app.Activity 

Application

java.lang.Object 
↳ android.content.Context 
    ↳ android.content.ContextWrapper 
     ↳ android.app.Application 

ứng dụng là những gì sống đến quá trình ứng dụng Android của bạn sẽ bị chết. Bạn có thể sử dụng nó để lưu trữ dữ liệu ứng dụng cụ thể (miễn là ứng dụng của bạn còn sống) có thể được sử dụng trên các hoạt động khác nhau. Lưu ý Tôi không nói bạn nên ... Tùy chọn chia sẻ có thể là cách thích hợp khác để đi tùy thuộc vào usecase của bạn. Ngoài ra chỉ để được rõ ràng bạn không thể sử dụng ứng dụng của bạn để khởi động ứng dụng của bạn không giống như hoạt động phóng bạn cung cấp trong tập tin manifest của bạn.

Bạn có thể sử dụng lớp ứng dụng tùy chỉnh của riêng bạn như sau

<application 
    android:name="icom.osfg.test.app.AppController" 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/MyTheme" > 
    <!-- all the activities goes here --> 
</application> 

nơi

AppController extends Application 
1

Chỉ cần để thêm vào các câu trả lời trước.

Lớp Application sẽ là một singleton sẽ tồn tại miễn là ứng dụng của bạn còn hoạt động.

Bạn có thể khởi tạo các thành phần toàn cầu trong lớp mở rộng Application vì nó sẽ kéo dài cho đến khi quá trình của bạn chết nếu bạn không muốn xử lý thông thường Activitylifecycle.

Ví dụ: khởi tạo các thư viện của bên thứ ba như: Parse, CanaryLeak, Crashlytics.

public class App extends Application { 

    @Override 
    public void onCreate() { 
     super.onCreate(); 

     Parse.initialize(this); 
     LeakCanary.install(this); 
     Fabric.with(this, new Crashlytics()); 
    } 
} 
Các vấn đề liên quan