我正在使用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
从启动器启动,它将始终返回正确的数据
请帮助,为什么会这样?以及如何解决?谢谢
答案 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。