我想定期在Worker中更改通知的文本。 (androidx.work.WorkManager)
我的Mainactivity看起来像这样
public class VariableDeclaration
{
public static void main(String[] args)
{
int speed,time,distance;
speed = 20;
time = 10;
distance = speed * time;
System.out.println(distance);
}
}
我的工人看起来像这样
public class Mainactivity extends AppCompatactivity {
...
private NotificationmanagerCompat notificationmanagerCompat;
private NotificationCompat.Builder notificationBuilder;
...
private void startNotification() {
...
notificationBuilder =
new NotificationCompat.Builder(getapplicationContext(),warnotifier_notification_channel)
.setSmallIcon(R.drawable.notification_icon)
.setContentTitle(notificationTitle)
.setContentText(notificationText)
.setContentIntent(pendingIntent)
.setautoCancel(true)
.setPriority(NotificationCompat.PRIORITY_LOW)
.setOngoing(true);
notificationmanagerCompat = NotificationmanagerCompat.from(getapplicationContext());
notificationmanagerCompat.notify(1,notificationBuilder.build());
PeriodicWorkRequest periodicWorkRequest = new PeriodicWorkRequest.Builder(NotificationWorker.class,PeriodicWorkRequest.MIN_PERIODIC_INTERVAL_MILLIS,TimeUnit.MILLISECONDS)
.addTag(workTag)
.build();
WorkManager.getInstance(getapplicationContext()).enqueue(periodicWorkRequest);
}
...
}
不幸的是,Android不允许我将Worker作为嵌套类放在Mainactivity中,因此无法访问上述的NotificationmanagerCompat和NotificationCompat.Builder实例。
我知道我可以将public class NotificationWorker extends Worker {
public NotificationWorker(@NonNull Context context,@NonNull WorkerParameters params) {
super(context,params);
}
@NonNull
@Override
public Result doWork() {
String notificationText = "Time: " + calendar.get(Calendar.HOUR_OF_DAY) + ":" + calendar.get(Calendar.MINUTE) + ":" + calendar.get(Calendar.SECOND);
notificationBuilder.setContentText(notificationText);
notificationmanagerCompat.notify(1,notificationBuilder.build());
return Result.success();
}
}
的简单数据传递给Worker,但我认为这没有帮助...
有什么想法吗?预先感谢。