2017-11-10 163 views
5

レシーバーを作成するために私は古いプロジェクトにWakefulBroadcastReceiverを追加しました。しかし今はdeprecatedです。代わりにWakefulBroadcastReceiverの代わりにReceiver私は今、どのように新しいメソッドで下のコードを変換する必要がありますか?WakefulBroadcastReceiverは非推奨です

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

答えて

2

WakefulBroadcastReceiver推奨されていません APIレベル26.1.0中:

は、ここに私のコードです。

Android Oでは、バックグラウンドチェックの制限により、このクラスは より一般的に長くなりました。 ( サービスを開始することは安全ではありません。理由は、 のアプリが現時点でフォアグラウンドにあり、 に許可されているという保証がないからです。 android.app.job.JobScheduler〜 を使用してジョブをスケジュールします。これは、アプリケーションがウェイクアップを実行している間にウェイクアップ ロックを保持する必要はありません(システムは、ウェイクロックをウェイクロック で保持します)。デモケースについては

public class JobSchedulerService extends JobService { 

    @Override 
    public boolean onStartJob(JobParameters params) { 

     return false; 
    } 

    @Override 
    public boolean onStopJob(JobParameters params) { 

     return false; 
    } 

} 

、ジョブスケジューラと私の上記のコードを変換する方法を

+0

をチェック! – Yeahia2508

+0

@ Yeahia420記事を読むhttp://www.vogella.com/tutorials/AndroidTaskScheduling/article.html –

+0

ジョブスケジューラに関する詳細な回答をここに入力すると他の人に役立つ場合は、こちらをご覧ください。 – Yeahia2508