我正面临一个浪费时间的问题
我正在用本地SQLite
数据库构建一个应用程序。例如,我希望此应用程序每隔15分钟向用户发送一次通知,其中包含来自SQLite
数据库的一些数据。我已经成功地实现了这一点,只要应用程序正在运行或未被终止,但当应用程序被终止时,用户将不再看到通知。我正在两台真正的设备上测试这个应用程序
public Result doWork() {
try {
SqliteAssetHelper dbHelper = new SqliteAssetHelper(MainActivity.mcontext);
mdatabase = dbHelper.getWritableDatabase();
Cursor mCursor = mdatabase.query(BDH.BDHEntry.TABLE_NAME,
new String[]{BDH.BDHEntry.COLUMN_HADITH_ID,BDH.BDHEntry.COLUMN_BOOK_NAME,
BDH.BDHEntry.COLUMN_DOOR_NAME, BDH.BDHEntry.COLUMN_NARRATORS, BDH.BDHEntry.COLUMN_CONTEXT},
BDH.BDHEntry.COLUMN_BOOK_ID+"=?",new String[]{"1"},null,null, "RANDOM() LIMIT 1");
if (mCursor != null) {
mCursor.moveToFirst();
if (mCursor.getCount() > 0) {
while (mCursor.isAfterLast() == false) { //You need to check if cursor doesnot contain last row
hadithID = mCursor.getString(mCursor.getColumnIndex("HadithID"));
book = mCursor.getString(mCursor.getColumnIndex("BookName"));
door = mCursor.getString(mCursor.getColumnIndex("DoorName"));
mCursor.moveToNext();
}
}
}
Intent intentActivity = new Intent(MainActivity.mcontext, HadithActivity.class)
.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intentActivity.putExtra("id", hadithID );
PendingIntent contentIntent = PendingIntent.getActivity(MainActivity.mcontext, 0, intentActivity, PendingIntent.FLAG_UPDATE_CURRENT);
notificationManager = NotificationManagerCompat.from(MainActivity.mcontext);
Notification notification = new NotificationCompat.Builder(MainActivity.mcontext,CHANNEL_ID)
.setSmallIcon(R.drawable.book)
.setContentTitle(book)
.setContentText(door)
.setPriority(NotificationCompat.PRIORITY_HIGH)
.setAutoCancel(true)
.setCategory(NotificationCompat.CATEGORY_CALL)
.setContentIntent(contentIntent)
.build();
notificationManager.notify(notificationID, notification);
return Result.success();
}
catch (Throwable throwable)
{
return Result.retry();
}
}
在主要活动中,我使用上一个通知程序每15分钟显示一次:-
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mcontext = this;
//creating constraints
Constraints constraints = new Constraints.Builder()
.setTriggerContentMaxDelay(1, TimeUnit.MINUTES)
.build();
PeriodicWorkRequest showHadithEveryHour = new PeriodicWorkRequest.Builder(HadithNotifier.class, 15, TimeUnit.MINUTES)
.setConstraints(constraints)
.build();
WorkManager.getInstance(this).enqueue(showHadithEveryHour);
}
当我更改通知程序类代码以显示不带任何值的日志消息时,logcat中的worker的结果是Success
Log.d(TAG,"Work Manager is working");
至少,从这个类中删除所有对Main Activity.mcontext
的引用。更好的做法是完全从应用程序中删除mbackground
,因为这是内存泄漏。
您的Worker
构造函数被传递一个Context
。在字段中保留它,并使用doWork()
方法中的Context
。
问题内容: 我正在iOS中制作一个应用程序,它将在计时器上发送本地通知。当应用程序处于后台状态时,它可以正常工作,但是在终止并完全关闭时,它无法工作。 无论如何,是否仍会在发生这种情况时发送本地通知? 提前致谢。 问题答案: 当然,如果您安排了本地通知,即使您终止应用程序,它也会触发。 …对我来说就像是一种魅力。
我已经为这个问题挣扎了几天了 我有一个android应用程序,用户可以指定植物浇水的频率。我想根据植物浇水的频率发送通知。(例如,每3天发送一次通知) 我知道有很多问题可以解决这个问题,但我仍然无法让它发挥作用 我从使用报警管理器实现/启动服务开始 主要问题是,一旦我的应用程序被终止,通知将不再发送 我正在使用firebase存储所有数据 我读了一些关于firebase函数的内容,但我不知道这是否
我在这方面发现了很多老问题,但我没有找到一个明确的答案,在应用程序被终止后,让本地通知单击事件起作用。如果应用程序处于活动状态或处于后台,则通知将起作用。为了进行测试,我编写了以下代码。 发生的情况是,通知已安排,并在2分钟后显示。如果应用程序在通知仍被触发的同时被终止,但单击事件未被处理,通知将再次安排。所以我假设通知在被点击后被清除,因为应用程序。ready事件稍后处理它无法处理click事件
我需要每X分钟从服务器同步一次数据,即使在关闭应用程序之后也是如此。我使用WorkManger和PeriodicWorkRequest每X分钟触发一次。这是每X分钟触发一次,即使我们关闭了应用程序。退出应用程序后我面临的问题是如何访问静态类或变量? 示例代码: 同步类。反恐精英: 常数。反恐精英: 当应用程序处于前台和后台状态,但由于DependencyService类为null而在终止状态下失败
我创建了一个简单的聊天应用程序,在接收者离线时向他发送推送通知。 正如我在标题中所说,当应用程序被终止时,我无法通过推送通知正确传递消息。实际上,当iPhone接收到推送通知并且应用程序被终止时,甚至application:didReceiveMemoteNotification:fetchCompletionHandler也不会被触发(如其他示例和apple文档中所示)。 然而,我的应用程序与W
即使应用程序从后台被杀死或从内存中被刷出,我如何接收到设备的fcm通知。我使用维梧、Oppo、松下设备。但在应用程序被终止时未收到通知。