【发布时间】:2017-06-02 12:23:12
【问题描述】:
我尝试从新用户添加到数据库时更新的通知启动活动(我正在使用 firebase 数据库)。
通知工作完美,但每当我尝试从通知启动 UserDashboardActivity 时。它不工作。
谁能帮帮我。
我的代码:
这里是Service里面的通知代码
public class NotificationService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
notifyMe(order.amount);
return START_STICKY;
}
private void notifyMe(String amount){
NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.add_order)
.setContentTitle("New Order")
.setContentText("Order amount: " + amount)
.setAutoCancel(true);
Intent notificationIntent = new Intent(this,UserDashboardActivity.class);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent contentIntent = PendingIntent.getActivity(this,0,notificationIntent,PendingIntent.FLAG_UPDATE_CURRENT);
builder.setContentIntent(contentIntent);
NotificationManager manager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
manager.notify(0,builder.build());
}
}
当 UserDoashboardActivity 停止时我正在启动服务
@Override
protected void onStop() {
super.onStop();
Intent intent = new Intent(UserDashboardActivity.this, NotificationService.class);
startService(intent);
}
【问题讨论】:
-
只是为了说清楚 - 如果您将 UserDashboardActivity 替换为任何其他活动,它可以工作吗?
-
没错……
-
另外我正在从 UserDashboardActivity 启动服务
-
可能因为您将 UDActivity 的引用作为上下文发送而出现了一些问题或泄漏。在活动中,尝试发送应用上下文而不是活动。或者,在服务中放置一些其他活动,而不是 UDActivity,并在该 oder 活动中编辑 onStop() 方法以将服务作为 UDActivity 中的 onStop() 方法启动,然后查看发生了什么
-
另外,如果你的服务在数据库发生变化时自动启动,为什么还要手动启动服务呢?这似乎写得不好。
标签: android android-activity android-service android-notifications