2017-11-10 46 views
5

Do stworzenia odbiornika został przedłużony WakefulBroadcastReceiver w moim starym projekcie. Ale teraz jest to deprecated. Zamiast WakefulBroadcastReceiver który powinienem teraz użyć i jak przekonwertować poniższy kod za pomocą nowej metody?WakefulBroadcastReceiver jest przestarzałe

Oto mój kod:

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(); 
    } 
} 

Odpowiedz

2

WakefulBroadcastReceiverPrzestarzałe na poziomie API 26.1.0.

Począwszy od Androida O, ograniczenia sprawdzania w tle sprawiają, że klasa ta nie jest dłuższa, ogólnie użyteczna na poziomie . (Zasadniczo nie jest bezpieczne uruchamianie usługi z odbioru transmisji, ponieważ nie masz żadnych gwarancji, że Twoja aplikacja jest na pierwszym planie w tym momencie, a tym samym pozwoliła na to ). Zamiast tego deweloperzy powinni należy zaplanować zadanie za pomocą android.app.job.JobScheduler do i nie wymaga to, aby aplikacja miała blokadę pobudki podczas wykonywania tej czynności (system zadba o przytrzymanie blokady wybudzenia dla zadania).

public class JobSchedulerService extends JobService { 

    @Override 
    public boolean onStartJob(JobParameters params) { 

     return false; 
    } 

    @Override 
    public boolean onStopJob(JobParameters params) { 

     return false; 
    } 

} 

Na razie demo, Sprawdź

+0

jak przerobić mój powyższy kod z harmonogramu pracy? – Yeahia2508

+0

@ Yeahia420 Przeczytaj artykuł http://www.vogella.com/tutorials/AndroidTaskScheduling/article.html –

+0

, jeśli będzie pomocny dla innych osób, jeśli podasz szczegółową odpowiedź na temat harmonogramu zadań tutaj. – Yeahia2508