2013-03-25 47 views
8

Tôi mới trong android, tôi không biết nhiều về services.i có một lớp hoạt động với giao diện người dùng, tôi muốn làm cho lớp hoạt động này chạy ẩn, khi tôi nhấp vào nút quay lại. làm thế nào để làm cho hoạt động của tôi chạy trong nền như một dịch vụ, plz giúp tôi ..Làm cho hoạt động chạy ở chế độ nền

+1

Launch một dịch vụ trong phương thức onPause(), ngăn chặn nó trong onResume(). Nếu bạn muốn biến một Hoạt động thành một dịch vụ, bạn nên sử dụng một dịch vụ. –

+0

Sau đó viết một dịch vụ? –

+0

@RaghavSood bạn có thể giải thích cách làm cho hoạt động của tôi thành một dịch vụ –

Trả lời

3

Nếu bạn chỉ muốn hoạt động của bạn chạy ở phía sau Hãy thử sử dụng

Movetasktoback(true); 
+1

ok. điều này đã làm việc cho tôi .. –

+2

@ user2208695 bạn có thể vui lòng cho biết nơi để viết điều này –

0

Bạn nên đọc hướng dẫn phát triển trên Chủ đề: http://developer.android.com/guide/components/processes-and-threads.html

Cụ thể chức năng doInBackground() Ví dụ từ trang:

public void onClick(View v) { 
    new DownloadImageTask().execute("http://example.com/image.png"); 
} 

private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> { 
    /** The system calls this to perform work in a worker thread and 
     * delivers it the parameters given to AsyncTask.execute() */ 
    protected Bitmap doInBackground(String... urls) { 
    return loadImageFromNetwork(urls[0]); 
} 

    /** The system calls this to perform work in the UI thread and delivers 
     * the result from doInBackground() */ 
    protected void onPostExecute(Bitmap result) { 
     mImageView.setImageBitmap(result); 
    } 
} 
+0

tôi không muốn làm cho nó một chủ đề .. tôi chỉ muốn chạy này trong backgroung như một dịch vụ ... hoạt động của tôi bao gồm quản lý điện thoại, phát sóng vv reciever vì vậy không cần phải làm cho nó thành một chủ đề –

+0

@Jesbin MJ Kiểm tra chỉnh sửa – RyPope

4

Bạn thực sự không thể chạy được Activity trên nền! Khi một hoạt động không ở trên nền trước, nó sẽ được chuyển đến onStop và sau đó hệ thống có thể chấm dứt nó, để giải phóng tài nguyên, theo phương pháp onDestroy! thấy Activity Lifecycle

Để chạy trên nền bạn cần phải tạo ra một Service hoặc IntentService

Thanh toán javadoc android về Dịch vụ herehere hoặc IntentService

và đây là một bên thứ ba Android Service Tutorial

Chỉnh sửa: bạn cũng có thể cần liên lạc giữa dịch vụ và hoạt động của mình để có thể vượt qua điều đó: Example: Communication between Activity and Service using Messaging

+0

tôi đã trải qua điều này nhưng tôi đã không nhận được nó. làm thế nào để ràng buộc lớp hoạt động của tôi vào lớp dịch vụ –

+0

xem thêm chỉnh sửa cuối cùng ... – madlymad

0

Dường như bạn muốn chạy một hoạt động ở chế độ nền khi thoát. Tuy nhiên, hoạt động không thể chạy trừ khi nó ở trên nền trước.

Để đạt được những gì bạn muốn, trong onPause(), bạn nên bắt đầu một dịch vụ để tiếp tục công việc đang hoạt động. onPause() sẽ được gọi khi bạn nhấp vào nút quay lại. Trong chế độ onPause, chỉ cần lưu trạng thái hiện tại và chuyển công việc sang dịch vụ. Dịch vụ sẽ chạy ở chế độ nền khi hoạt động của bạn không ở trên nền trước.

Khi bạn quay trở lại hoạt động của mình sau, hãy làm một điều gì đó trong onResume() để chuyển công việc của dịch vụ sang hoạt động của bạn một lần nữa.

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