单击应用程序通知后,开始新活动,但无法在sqlite db上获取数据

时间:2019-04-06 11:26:02

标签: android

我正在使用android应用程序,我希望每次用户单击通知时,它将启动新活动,但是该活动已启动,但是无法从sqlite中读取任何数据

在进行维护活动之前,我已经启动了初始屏幕。我已设置为在单击通知后打开启动屏幕或mainactivity,两者都相同,它将通过oncreate过程进行但无法从sqlite获取任何数据 我已经检查了数据库连接,但它不为空

待定意图

Intent resultIntent;
        resultIntent = new Intent(this, MainActivity.class);
        resultIntent.putExtra("act", "alert");
        resultIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, resultIntent,
                PendingIntent.FLAG_ONE_SHOT);

主要活动oncreate

HashMap user = new HashMap();
        db = DatabaseHelper.getInstance(getApplicationContext());
        user = db.getUser();

如果mainactivity从单击通知开始,则user值始终为空 但是如果mainactivity从启动器启动,它将始终返回正确的数据

请帮助,为什么会这样?以及如何解决?谢谢

3 个答案:

答案 0 :(得分:0)

终于花了一天的时间,我找到了解决方法

实际上,问题出在退出应用的途中,

我正在使用System.exit(0);,在关闭应用程序并单击通知不知道为什么后重新打开应用程序后,发生了奇怪的行为

删除代码,即可正常运行

答案 1 :(得分:0)

一旦您点击通知android,打开您的 MainActivity ,就会比在 onCreate()调用中获得您在 PendingIntent 中传递的意图,如下所示< / p>

  Intent intent = getIntent();
  if (intent != null) {
   String data = intent.getStringExtra("act");
   if (data != null) {
    getCallForDataFromSqlite();
   }
  }

继续编码:)

答案 2 :(得分:0)

发生这种情况是因为当您从单击通知开始活动时,将不会调用您的onCreate(),请看这里:

https://developer.android.com/reference/android/content/Intent.html?hl=ru#FLAG_ACTIVITY_CLEAR_TOP

  

FLAG_ACTIVITY_CLEAR_TOP

如果已设置,并且正在启动的活动已在当前任务中运行,那么与其启动该活动的新实例,不如关闭该活动之上的所有其他活动,并将此Intent传递给(现在位于顶部)旧活动作为新的Intent。