我想在每天上午8:00创建通知.我在SQLite数据库中有一些数据,此时我每天都想从中获取数据并从中创建通知.创建新通知没有问题,但我现在每天如何显示它?
我想我必须使用服务但是如何告诉系统在特殊时刻启动此服务?我应该使用什么样的服务?我想如果系统调用该服务,它会启动一个特定的功能,我可以运行我的代码连接到数据库并创建并将我的通知发送到系统吗?
我无法理解的是,如果我在我的主Activity中注册该服务,为什么系统会在用户关闭我的应用程序时启动服务?任何人都可以向我解释一下吗?我总是认为如果我的主要活动被破坏,服务也会被破坏.
如果我与我的应用程序进行交互(使用),我有一个警报可以正常工作,但是如果我将它设置为第二天并且不与我的应用程序进行交互则它不起作用.因此我怀疑这是因为我的应用程序进程没有运行那时候.
这就是我在做什么
Calendar calSet = Calendar.getInstance();
calSet.set(Calendar.HOUR_OF_DAY, selectedhour);
calSet.set(Calendar.MINUTE, selectedminute);
calSet.set(Calendar.YEAR, year);
calSet.set(Calendar.MONTH, monthOfYear);
calSet.set(Calendar.DATE, dayOfMonth);
alarm = new Intent(ActivityA.this, Service.class);
pendingIntent = PendingIntent.getService(getApplicationContext(), i++,alarm, 1);
alarmanager.set(AlarmManager.RTC_WAKEUP, calSet.getTimeInMillis(),pendingIntent);
Run Code Online (Sandbox Code Playgroud) 我有一个方法,即使用户没有重新打开应用程序,我也需要每隔几个小时运行一次.什么是最好的方式?我应该使用Timer类还是Alarm Manager?谢谢!
我正在尝试遵循这个答案但是,它在模拟器和我的手机上都不起作用,所以我对模拟器日志和电话有疑问并重新启动以模拟和调试
我在底部有非常有趣的笔记,让我感到非常困惑
我正在使用 API 24 和像素 3 模拟器和真正的三星 8 手机
我做了典型的添加到清单
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
Run Code Online (Sandbox Code Playgroud)
和
<receiver android:name=".biz.alarm.BootupReceiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
但是我从来没有看到这个日志语句......
public class BootupReceiver extends BroadcastReceiver {
private final static String TAG = "BootupReceiver";
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.d(TAG, "booted. action="+action);
}
}
Run Code Online (Sandbox Code Playgroud)
对于模拟,我单击播放按钮并观看我的应用程序出现。然后我按住电源按钮,当我真的只想重新启动时,它只给我一个“关机”选项......奇怪,所以我关机了。这似乎完全退出了模拟,这样当我在 Android Studio 的模拟器上再次点击播放时,它就会记录
08/06 19:17:40: Launching 'app' on Pixel 3 API 24.
$ adb shell am start -n "app.mykeepintouch.kit/app.mykeepintouch.kit.MainActivity" -a android.intent.action.MAIN -c …Run Code Online (Sandbox Code Playgroud) 我正在使用以下代码提醒用户在特定时间使用通知关于应用程序中的新更新每件事情都正常工作我们会在所需的时间收到提醒
这是mainactivity.java
public void setAlarm(){
alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmIntent = new Intent(MainActivity.this, AlarmReceiver.class);
pendingIntent = PendingIntent.getBroadcast( MainActivity.this, 0, alarmIntent, 0);
alarmStartTime.set(Calendar.HOUR_OF_DAY, 10);
alarmStartTime.set(Calendar.MINUTE, 00);
alarmStartTime.set(Calendar.SECOND, 0);
alarmManager.setRepeating(AlarmManager.RTC, alarmStartTime.getTimeInMillis(), getInterval(), pendingIntent);
}
private int getInterval(){
int days = 1;
int hours = 24;
int minutes = 60;
int seconds = 60;
int milliseconds = 1000;
int repeatMS = days * hours * minutes * seconds * milliseconds;
return repeatMS;
}
Run Code Online (Sandbox Code Playgroud)
AlarmReceiver.java
public class AlarmReceiver extends BroadcastReceiver {
NotificationManager notificationManager;
@Override …Run Code Online (Sandbox Code Playgroud)