这是更好的警报经理或工人
我想通过使用RetRofit2网络在某些时间和日显示通知. 但是在警报管理器文档中.它提到这不是适当的FPR Networkong作业.但是在Workmanager文档中,它说明了确切的工作使用警报管理器.有什么更好的使用?警报经理或工作经理 解决方案 Android引入了许多需要挽救电池寿命的东西: 打ze版1 -API 6.0 DOZE 2 -API 7.0 删除连接_change清单声明和其他-API 7.0 API 8.0 中的背景执行限制 应用待机桶API 9.0(在Android 12中升级) /Power#buckets https://developer.android.android.android. com/about/about/versions/12/candy-changes-all#rescontive-app-standby bucket https://develoveling.android.com/troid.com
0 2024-02-19
编程技术问答社区
当应用程序不在后台且自动启动选项被禁用时,JobScheduler在小米中无法工作。
我想每天在应用程序中运行一个任务,我正在使用JobsCheduler并在库存OS中运行良好,但是当我尝试用具有自定义ROM(小米)的电话运行它时,除非我在安全性中明确启用该应用程序的自动启动选项.有没有解决方案,其他应用程序如何处理此情况? 解决方案 这是一些Android OEM的已知问题,该问题大量修改了Android以进行电池优化. 除了将应用程序添加到白名单中,您实际上只能报告问题: 到OEM(在这种情况下为小米)以避免这种破坏变化. 向Google,在 cts 中添加测试. 使用Workmanager不会解决此问题,因为WM在可用时仍使用JobsCheduler API. 来自Workmanager的问题跟踪器:是否支持中国制造商(Huawei,Oppo,Xiaomi ...) P> 其他解决方案 使用 workmanager 从现在开始.它将根据Android版本自动处理所有内容
0 2024-02-19
编程技术问答社区
WorkManager或AlarmManager用于日常请求-然后通知的工作?
这是用例:用户在特定时间设置每日通知.在指定的时间,提出网络请求以获取一些数据,然后使用检索到的数据显示通知.我不确定我是否应该使用AlarmManager或Workmanager来实现此用例. 据我了解,AlarmManager最适合在精确时间安排.但是如果没有网络,这项工作就会失败,我更喜欢将作业推迟以尊重网络约束,而不是执行失败.对于这种有限的工作,在保证最终执行的情况下,Workmanager看起来像是最好的解决方案,使用具有初始延迟的OnigeworkRequest,以便在适当的时间执行. 解决方案 比较AlarmManager和Workmanager, Workmanager 赢得了胜利: 1)从Kitkat开始的警报器,警报可能会通过OS转移,以减少设备的唤醒以减少电池使用情况. 检查 2)由于您不会为通知定义特定的时机,我的意思是,在这里,您不会在特定的时间内使用Calender,也许是3:00 pm,请使用Workmanager,因为您在Workma
2 2024-02-19
编程技术问答社区
WorkManager一次执行enqueueUniquePeriodicWork()多次?
我是新手,所以请让我知道问题是否措辞不好!我有一个Android应用程序,即使手机锁定,也需要大约每15分钟执行任务.上下文是: - IM针对SDK 23或更高 - 任务1)使用用户的位置2)使用OKHTTPCLIENT致电HTTPS API,然后3)将结果发送到Firestore数据库 我正在使用Workmanager尝试实现这一目标.但是,问题是每次执行时,它都会这样做8-9次,并且时间安排非常不规则.我可以从Firestore条目和logcat中看到这一点. 工人甚至是正确执行此任务的正确方法吗?我正在使用 implementation "androidx.work:work-runtime:2.0.1" import androidx.work.PeriodicWorkRequest; import androidx.work.WorkManager; import androidx.work.ExistingPeriodicWorkPolicy; 我看到其
0 2024-02-19
编程技术问答社区
Android 12:使用 SCHEDULE_EXACT_ALARM 权限在特定时间获取/显示数据在 Google Play 政策中安全吗?
我在Play商店有一个Android应用程序已有8年了.最近,Google版本Android S或12引入了一些限制,并使用前景服务发布限制 https "> https:https://开发人员. android.com/about/versions/12/behavior-changes-12#foreground-service-launch-fractions 和 确切的警报权限 https://developer.android.android. com/about/versions/12/actution-changes-12#exact-alarm-permission 在应用程序中,我使用前景服务和闹钟时间来安排云和设备传感器的天气数据,并将通知发送给用户,然后更新小部件. 但是他们说: 确切的警报应仅用于面向用户的功能 ,因此,如果我继续使用这些API,它是安全的(使用Google Play策略)? 我之所以问这个,是因为其他解决方案(如粘
0 2024-02-19
编程技术问答社区
WorkManager与AlarmManager,根据情况使用什么?
我必须执行此用例(不是代码,只是正确的用法) 用例:我需要在00:30每天从网络中获取一些数据.这些数据为我提供了一些特定的时间,其中之一是大约4:30(每天更改+1分钟-1分钟,取决于服务器响应,无法在任何地方使用++或 - 逻辑).在这个(4:30)上,我需要安排一个警报.什么不清楚: 我应该直接使用AlarmManager吗? 我应该使用工人来获得需要警报和使用AlarmManager的时间吗? 我应该只使用工人吗? 我感到困惑的原因是,我读过的一些博客说,如果我在特定的时间有一些工作,那最好坚持使用AlarmManager,但是我仍然可以使用Workmanager 来做到这一点. 那么如何完成? 解决方案 我应该直接将AlarmManager用于此? 是的.据我所知,AlarmManager是最佳选择" rel =" nofollow noreferrer">打doze模式.使用第一个警报在特定时间设置第二个警报. 我应该使用W
0 2024-02-19
编程技术问答社区
android-widget AlarmManager重复速度过快
我有一个窗口小部件,显示数据使用情况,为此,我创建了一个偏好性,用户可以从各种更新频率中进行选择. 我从共享流程中获得所选的FREQ值,然后启动警报,但结果很奇怪.这是我的AppWidgetProvider: private static PendingIntent pendingIntent = null; ... public void onReceive(Context context, Intent intent) { Log.d("TAG", "receive"); super.onReceive(context, intent); if (CLOCK_WIDGET_UPDATE.equals(intent.getAction())) { ComponentName thisAppWidget = new ComponentName(context.getPackageName(), getClass().getName());
2 2024-02-19
编程技术问答社区
安卓报警管理器在5秒后重复,并忽略了间隔时间
我正在处理一个小部件应用程序,在该应用程序中,我必须每分钟执行一些任务.因此,我正在使用AlarmManager来实现这一目标.但是,无论我设置什么时间间隔,它都会在每5秒内重复一次. 我正在使用这样的警报器: final AlarmManager alarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); alarm.cancel(pendingIntent); long interval = 60000; alarm.setInexactRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime(), interval, pendingIntent); 预先感谢. 解决方案 AlarmManager.ELAPSED_REALTIME用于触发警报,因为系
2 2024-02-19
编程技术问答社区
AppWidget alarmmanager不更新
所以,我有一个小部件,我希望它每60秒更新一次.首先将小部件添加到HomeScreen中时,它可以运行其更新功能.除此之外,它应该启动一个AlarmManager,该警报器将每60秒重新运行更新方法.这是它似乎并非实际上做的部分.这是我的代码: public class ClockWidget extends AppWidgetProvider { public static String CLOCK_WIDGET_UPDATE = "com.nickavv.cleanwidget.CLEANCLOCK_UPDATE"; @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int appWidgetIds[]) { final int N = appWidgetIds.length; for (int i =
2 2024-02-19
编程技术问答社区
使用AlarmManager更新应用程序小部件
我试图比1.6DOC施加的30分钟限制更频繁地更新小部件.在阅读了几乎所有帖子,以及开发人员文档以及其他各种来源之后,我认为我已经可以实施它了.因此,我尝试并失败了.从那以后,我拖了更多的论坛和解决方案,而且我似乎无法更新. 我有一个更新类,可以设置AlarmManager: public class Update extends Service{ @Override public void onStart(Intent intent, int startId) { String currentTemp = Battery.outputTemp; String currentLevel = Battery.outputLevel; String currentCard = Battery.outputCard; String currentInternal = Battery.m
0 2024-02-19
编程技术问答社区
在后台安卓系统中每5分钟运行一次排雷请求
我使用射击库与应用程序中的服务器连接.现在,当应用程序不运行时,我也必须每5分钟发送一次后台请求(被用户杀死).我应该怎么做?有了背景服务,AlarmManager(Google说这不是网络操作的好选择)或其他内容? 或syncadapter对它有好处? 解决方案 您可以在服务类中使用 schedueatfixedrate 来实现这一目标,以下是服务类的示例,您可以使用它 public class ScheduledService extends Service { private Timer timer = new Timer(); @Override public IBinder onBind(Intent intent) { return null; } @Override public void onCreate() { super.onCreate(); timer.scheduleAtFixedRate(new Tim
2 2024-02-19
编程技术问答社区
警报管理器或处理程序
我有特定的案例可以使用每10-60分钟(仍然取决于),但仅在打开应用程序时. 创建此功能是为了告知会话仍在打开,其中将会话定义为从应用程序打开到应用程序关闭的期限.我不必担心杀死过程. 什么是最好使用? AlarmManager 或处理程序 .postDelayed()? 有针对性的平台是Android TV,所以想象一下情况是在我的应用程序中观看电影时. 我个人首先考虑使用AlarmManager,但我意识到与情况进行了更多的代码. 处理程序是否会导致更多 cpu 用法增加? 解决方案 AlarmManager将来在不运行时启动您的应用程序.因此,我认为Handler.postDelayed()如果您仅在打开应用时才ping服务器,Handler.postDelayed()是一个更有效的选择. 注意:即使您的应用程序当前未运行,警报管理器的目的也适用于您要在特定时间运行应用程序代码的情况.对于正常的定时操作(tick,超时等),使用处理程序更容易,更有效
2 2024-02-19
编程技术问答社区
安卓休眠模式
在我的应用程序中,我将使用警报通知用户事件,问题是 在Android版本6.x- 上 确切时间相同的时间后发出警报. 仅当设备在睡眠模式下输入时. 我试图在警报前挥动设备,但无济于事. 有人可以帮我吗?这是我的代码 设置警报 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, alarmCalendar.getTimeInMillis(), pendingIntent); if (minutesBefore > 0) { beforeCalendar.add(Calendar.MINUTE, -minutesBefore); alarmManager.setExactAndAllowW
2 2024-02-19
编程技术问答社区
档案清理服务
作为Android OS手机的要求,我正在开发一个应用程序,该应用程序将在指定的时间间隔(例如每30分钟)清理特定文件夹. 我可以运行服务并每30分钟清理文件夹.我对此有几个问题, 1.服务有OnstartCommand(服务启动时将执行),我可以在此处调用一个函数,该函数每30分钟运行一次处理程序?示例 public int onStartCommand(Intent intent, int flags, int startId){ cleanUpData(); return START_REDELIVER_INTENT; } public void cleanUpData() { Handler handler = new Handler(); handler.postDelayed(new Runnable() { @Override public void run() { // call the
2 2024-02-18
编程技术问答社区
安卓系统。AlarmManager没有被解雇
我正在尝试在未来的计划时间内产生警报.以下是代码 mainActivity.java import android.app.AlarmManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.View; import android.view.Me
2 2024-02-18
编程技术问答社区
背景服务的报警管理器
我已经实施了警报管理器,以定期每15分钟唤醒背景服务.它运行良好,但是由于包含了Doze Mode Android 6.0,因此表现得很奇怪,并且每15分钟都不会醒来.虽然,我正在使用方法alarm.setexactandallowwhileidle(),但仍未在闲置状态下工作 这是我实施警报管理器的方法 private void serviceRunningBackground() { final Intent restartIntent = new Intent(this, service.class); restartIntent.putExtra("ALARM_RESTART_SERVICE_DIED", true); alarmMgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE); Handler restartServiceHandler; restartS
AlarmManager停止运行
我正在编写一个程序,该程序应在后台每10分钟运行一次.只要我积极使用手机,我似乎都可以正常工作的代码,但是在长时间之后(例如,一夜之间),该过程似乎自己停止了.当我的程序运行时,我可以在设备上的"缓存过程"下查看它,但是一段时间后它将停止在列表中显示. 我正在阅读有关 Wavefulintentservice ,并且想知道我是否需要使用它.据我了解,即使手机睡觉,它也可以使您的背景过程保持运行.不确定"睡眠"在Android中是什么意思,如果您关闭电源的时候,或者手机不使用一段时间就进入"睡眠"状态. 这是我正在使用的代码: 主类: public class Main extends ListActivity { @Override public void onCreate(Bundle icicle) { AlarmManager alarmManager = (AlarmManager)getSy
0 2024-02-18
编程技术问答社区
安卓系统中自定义通知的确切时间
我正在开发咨询服务的Android申请.客户可以在应用程序中查看其预定的约会.例如, 下一个约会: 2016年12月31日10:00 AM 现在,我需要这样做,用户将收到2个通知 - 关于约会的提醒.一个前7天,另一个在3天前.我将这个日期保存(2016年12月31日上午10:00)为String,以便我可以提取年,月份等. 我发现我需要写一些将发送这些通知的服务.这是我尝试的(未完成): public class NotificationService extends Service { @Override public void onCreate() { Intent resultIntent=new Intent(this, MainActivity.class); PendingIntent pIntent = PendingIntent.getActivity(this, 0, resultIntent, 0);
0 2024-02-18
编程技术问答社区