Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 单击应用程序通知后,启动新活动,但无法获取sqlite db上的数据_Android - Fatal编程技术网

Android 单击应用程序通知后,启动新活动,但无法获取sqlite db上的数据

Android 单击应用程序通知后,启动新活动,但无法获取sqlite db上的数据,android,Android,我正在开发android应用程序,我希望用户每次单击通知时,它都会启动新的活动,但是,活动已经启动,但无法从sqlite读取任何数据 在主活动开始之前,我已经安装了splashscreen。我已设置在单击通知后打开splashscreen或mainactivity,两者都执行相同的操作,它将通过oncreate过程,但无法从sqlite获取任何数据 我已经检查了数据库连接,它不是空的 未决意图 Intent resultIntent; resultIntent = new Int

我正在开发android应用程序,我希望用户每次单击通知时,它都会启动新的活动,但是,活动已经启动,但无法从sqlite读取任何数据

在主活动开始之前,我已经安装了splashscreen。我已设置在单击通知后打开splashscreen或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);
创建时的主要活动

HashMap user = new HashMap();
        db = DatabaseHelper.getInstance(getApplicationContext());
        user = db.getUser();
如果
mainactivity
是从单击通知开始的,则
user
值始终为空 但如果
mainactivity
从启动器启动,它总是返回正确的数据


请帮忙,为什么会这样?如何修复它?谢谢

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

实际上,问题出在退出应用程序的过程中

使用
System.exit(0),关闭应用程序并单击通知重新打开应用程序后发生奇怪行为不知道原因


删除代码,当您单击通知android open youMainActivity时,它将非常有效,而不是在onCreate()调用中获取您在PendingEvent中传递的意图,如下图所示

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

继续编码:)

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

标记\u活动\u清除\u顶部

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