https://xamarinhelp.com/xamarin-background-tasks/#comment-1296 ..我正在使用这个后台工作者。我想在我的应用程序状态运行或不运行的每一天重复显示本地通知。它对我不起作用..请帮忙。 SendNotification()从主活动调用。重复的本地通知在我的应用程序状态运行的地方运行良好。但是在我的应用程序状态未运行的情况下,它无效。
JSONObject merged = new JSONObject(Obj1, JSONObject.getNames(Obj1));
for(String key : JSONObject.getNames(Obj2))
{
merged.put(key, Obj2.get(key));
}
我正在尝试Android - Running a background task every 15 minutes, even when application is not running解决方案。但输出相同。
答案 0 :(得分:0)
在Android上,如果版本< = 19,则可以使用AlarmManager
,如果版本> 20,则使用JobScheduler
。以下是github上的演示。
像这样:
public void startTask()
{
if (Build.VERSION.SdkInt <= BuildVersionCodes.Kitkat)
{
AlarmManager alarmManager = (AlarmManager)GetSystemService(Context.AlarmService);
Intent intent = new Intent(this, typeof(RepeatingAlarm));
PendingIntent sender = PendingIntent.GetBroadcast(this, 0, intent, 0);
// Schedule the alarm!
alarmManager.SetRepeating(AlarmType.RtcWakeup, SystemClock.ElapsedRealtime(), 5 * 1000, sender);
}
else
{
JobScheduler scheduler = (JobScheduler)GetSystemService(Context.JobSchedulerService);
if (isJobPollServiceOn())
{
}
else
{
JobInfo jobInfo = new JobInfo.Builder(1,
new ComponentName(this, Java.Lang.Class.FromType(typeof(JobSchedulerService))))
.SetPeriodic(1000*5)
.Build();
scheduler.Schedule(jobInfo);
}
}
}
isJobPollServiceOn
方法:
[TargetApi(Value = 20)]
public bool isJobPollServiceOn()
{
JobScheduler scheduler = (JobScheduler)GetSystemService(Context.JobSchedulerService);
bool hasBeenScheduled = false;
var jobInfos = scheduler.AllPendingJobs;
for (int i = 0; i < jobInfos.Count; i++)
{
if (jobInfos[i].Id == 1)
{
hasBeenScheduled = true;
break;
}
}
return hasBeenScheduled;
}