Android 推送通知打开时的回调
我知道我们可以在通知打开时启动以下活动:Android 推送通知打开时的回调,android,notifications,push-notification,Android,Notifications,Push Notification,我知道我们可以在通知打开时启动以下活动: NotificationCompat.Builder builder = new NotificationCompat.Builder(this) Intent targetIntent = new Intent(this, MainActivity.class); PendingIntent contentIntent = PendingIntent.getActivity(this, 0, targetIntent, PendingIntent.FL
NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
Intent targetIntent = new Intent(this, MainActivity.class);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, targetIntent, PendingIntent.FLAG_UPDATE_CURRENT);
builder.setContentIntent(contentIntent);
//...
但是,如果我不想在活动中使用午餐,而是想运行回调,比如一些onPushOpen,以便在那里选择如何处理通知,那该怎么办呢?单击可以实现这一点。只需发布一些事件,如onPushOpen(),并在任何地方捕获它。使smth像:
Intent targetIntent = new Intent(this, NaughtyActivity.class);
让淘气活动不用布局。仅用于发布事件并完成。您可以在清单中声明一个活动,称之为NotificationClickHandlerActivity,将其设置为通知的挂起意图的目标,而不是MainActivity 在这个新活动的onCreate方法中,只需调用getIntent,根据intent中的信息(操作、类别、附加)确定下一步需要打开什么,启动您确定的新目标活动或执行一些其他操作,然后从onCreate内部调用finish并立即返回 如果一个活动像这个处理程序一样在onCreate中调用finish,它将永远不会显示给用户,因此用户甚至不会意识到它的存在,他所看到的只是您可能从中启动的其他活动 另外,请记住,您不应该在此处理程序活动的onCreate方法中执行长时间运行的操作,因为这些操作将在UI线程上执行,并将阻止应用程序响应用户输入。如果必须执行更长时间的运行,请将其放入异步任务子类(处理程序活动的静态嵌套类或完全独立的类)中,然后从onCreate方法启动此任务的实例,并在任务启动后立即调用finish。任务将继续在后台运行。如果任务需要一个上下文来执行它必须执行的任何操作,请确保通过调用getApplicationContext向其传递应用程序上下文,并且不要传递活动本身,否则将导致内存泄漏