package Ġs st . com . ano unce ments Ċ Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . navigation . find Nav Controller Ċ import Ġandroidx . navigation . fragment . Nav Host Fragment Ċ import Ġandroidx . navigation . ui . AppBar Configuration Ċ import Ġandroidx . navigation . ui . navigate Up Ċ import Ġandroidx . navigation . ui . setup ActionBar With Nav Controller Ċ import Ġandroidx . work . Existing Periodic Work Policy Ċ import Ġandroidx . work . Work Manager Ċ import Ġorg . k oin . android . ext . android . inject Ċ import Ġs st . com . ano unce ments . feed . worker . UPDATE _ FEED _ WORK _ NAME Ċ import Ġs st . com . ano unce ments . feed . worker . Update Feed Worker Ċ import Ġs st . com . ano unce ments . notification . Notification Service Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġapp Bar Configuration : ĠApp Bar Configuration ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfeed URL Ġ= ĠgetString ( R . string . blog _ rss _ url ) ĊĠĠĠĠĠĠĠ Ġsetup Notifications ( feed URL ) ĊĠĠĠĠĠĠĠ Ġsetup Nav ( feed URL ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Support Navigate Up (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnav Controller Ġ= Ġfind Nav Controller ( R . id . nav _ host _ fragment ) ĊĠĠĠĠĠĠĠ Ġreturn Ġnav Controller . navigate Up ( app Bar Configuration ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġsuper . on Support Navigate Up () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Notifications ( feed URL : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠSetup Ġthe Ġnotification Ġservice ĊĠĠĠĠĠĠĠ Ġval Ġnotification Service : ĠNotification Service Ġby Ġinject () ĊĠĠĠĠĠĠĠ Ġnotification Service . setup () ĊĊĠĠĠĠĠĠĠ Ġ// ĠEn queue Ġa Ġunique Ġworker Ġto Ġupdate Ġthe Ġfeed Ġand Ġpush Ġnotifications ĊĠĠĠĠĠĠĠ ĠWork Manager . getInstance ( this ). enqueue Unique Periodic Work ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUPDATE _ FEED _ WORK _ NAME , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIMPORT ANT : ĠIf Ġthis Ġis Ġchanged Ġto Ġ. KEEP Ġand Ġthe Ġblog ĠURL Ġis Ġchanged , Ġworkers ĠWILL ĠNOT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġget Ġthe Ġnew Ġblog ĠURL ĊĠĠĠĠĠĠĠĠĠĠĠ ĠExisting Periodic Work Policy . REPLACE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUpdate Feed Worker . create Work Request ( feed URL ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Nav ( feed URL : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠApp arent ly Ġfind Nav Controller Ġcan 't Ġbe Ġused . ĠSee Ġhttps :// stackoverflow . com / a / 5 9 2 7 5 1 8 2 / 4 4 2 8 7 2 5 ĊĠĠĠĠĠĠĠ Ġval Ġnav Host Fragment Ġ= Ġsupport FragmentManager . find Fragment ById ( R . id . nav _ host _ fragment ) Ġas ĠNav Host Fragment ĊĠĠĠĠĠĠĠ Ġval Ġnav Controller Ġ= Ġnav Host Fragment . nav Controller ĊĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġarguments Ġfor Ġthe Ġstarting Ġfragment ĊĠĠĠĠĠĠĠ Ġval Ġfragment Args Ġ= ĠBundle () ĊĠĠĠĠĠĠĠ Ġfragment Args . putString (" feed Url ", Ġ Ġfeed URL ) ĊĠĠĠĠĠĠĠ Ġnav Controller . set Graph ( R . navigation . nav _ graph , Ġfragment Args ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠSetup Ġapp Ġbar . ĠThis Ġwill Ġadd Ġback Ġbuttons Ġfor Ġnon - home Ġfragments ĊĠĠĠĠĠĠĠ Ġapp Bar Configuration Ġ= ĠApp Bar Configuration ( nav Controller . graph ) ĊĠĠĠĠĠĠĠ Ġsetup ActionBar With Nav Controller ( nav Controller , Ġapp Bar Configuration ) ĊĠĠĠ Ġ} Ċ } Ċ