2017-11-10 19 views
5

Để tạo người nhận, tôi được gia hạn WakefulBroadcastReceiver trong dự án cũ của tôi. Nhưng bây giờ là deprecated. Thay vì WakefulBroadcastReceiverReceiver tôi nên sử dụng ngay bây giờ và cách chuyển đổi mã bên dưới bằng phương pháp mới?WakefulBroadcastReceiver không được chấp nhận

Đây là mã của tôi:

public class TaskFinishReceiver extends WakefulBroadcastReceiver { 
    private PowerManager mPowerManager; 
    private PowerManager.WakeLock mWakeLock; 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     mPowerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE); 
     turnOnScreen(); 
     Intent wakeIntent = new Intent(); 

     wakeIntent.setClassName("com.packagename", "com.packagename.activity.TaskFinished"); 
     wakeIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     context.startActivity(wakeIntent); 
    } 


    public void turnOnScreen(){ 
     mWakeLock = mPowerManager.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "tag"); 
     mWakeLock.acquire(); 
    } 
} 

Trả lời

2

WakefulBroadcastReceiverKhông dùng nữa ở mức API 26.1.0.

Kể từ Android O, hạn chế kiểm tra lý lịch khiến lớp này không còn dài hơn thường hữu ích. (Nói chung không an toàn khi bắt đầu một dịch vụ từ khi nhận được một phát sóng, bởi vì bạn không có bất kỳ đảm bảo nào rằng ứng dụng của bạn đang ở nền trước tại thời điểm này và do đó được phép làm như vậy.) Thay vào đó, nhà phát triển nên sử dụng android.app.job.JobScheduler để lập lịch công việc và điều này không yêu cầu ứng dụng giữ khóa chế độ trong khi làm như vậy (hệ thống sẽ đảm nhiệm việc giữ khóa đánh thức cho công việc).

public class JobSchedulerService extends JobService { 

    @Override 
    public boolean onStartJob(JobParameters params) { 

     return false; 
    } 

    @Override 
    public boolean onStopJob(JobParameters params) { 

     return false; 
    } 

} 

Đối với trường hợp demo, Kiểm tra

+0

làm thế nào để chuyển đổi mã trên tôi với lịch trình công việc? – Yeahia2508

+0

@ Yeahia420 Đọc bài viết http://www.vogella.com/tutorials/AndroidTaskScheduling/article.html –

+0

nếu sẽ hữu ích cho người khác nếu bạn cung cấp bất kỳ câu trả lời chi tiết nào về trình lên lịch công việc tại đây. – Yeahia2508

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