我正在使用onDestroy
方法,当应用关闭时,我并不总是会调用它。这给我带来了一个问题,我希望每次关闭应用程序时都会弹出通知。有一个更好的方法吗?顺便说一句,onStop
和onPause
不适合我,因为我的应用程序作为后台服务运行。有趣的是,我的onDestroy
方法在我的后台服务运行时每次都有效,但每当它关闭时,只有应用程序界面打开,我的onDestroy
永远不会被调用。这看起来很奇怪,因为我认为如果设备缺少资源就不会调用onDestroy
,而运行我的服务会占用更多的资源。 IDK。任何有关这方面的帮助将不胜感激!
`@Override
public void onDestroy(){
super.onDestroy();
Log.d("asdasd","asdasdasdasdasd");
if(notif.isChecked()) {
Intent intent1 = new Intent(this, MainActivity.class);
PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent1, 0);
Notification noti = new Notification.Builder(this)
.setContentTitle("S-Dimmer")
.setContentText(getResources().getString(R.string.sDimmerStopped))
.setSmallIcon(R.drawable.ic_action_name1)
.setContentIntent(pIntent).getNotification();
noti.flags = Notification.FLAG_NO_CLEAR;
NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
nm.notify(0, noti);
doas.isRunning = false;
}
}`
答案 0 :(得分:0)
并不总是调用此方法,因此您应该尝试使用后台服务,因为还有一些销毁过程警报。 所以请尽量在服务中做你想做的事。
onDestroy()可能会或可能不会在任何给定的活动或服务上调用。一般规则是调用onDestroy(),或者终止进程,或者代码崩溃。
你没有。您的进程可能会在任何时候由用户或操作系统以任何理由终止。发生这种情况时,可能会或可能不会使用onDestroy()调用。虽然您可以通过服务上的onTaskRemoved()稍微提高您的成功率,但这本身已被证明是不可靠的,并且它不会涵盖所有情况。
答案 1 :(得分:0)
你这样做错了。在onDestroy方法中,所有其他东西应该在 super.onDestory()
之前实现试试这个
@Override
public void onDestroy(){
Log.d("asdasd","asdasdasdasdasd");
if(notif.isChecked()) {
Intent intent1 = new Intent(this, MainActivity.class);
PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent1, 0);
Notification noti = new Notification.Builder(this)
.setContentTitle("S-Dimmer")
.setContentText(getResources().getString(R.string.sDimmerStopped))
.setSmallIcon(R.drawable.ic_action_name1)
.setContentIntent(pIntent).getNotification();
noti.flags = Notification.FLAG_NO_CLEAR;
NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
nm.notify(0, noti);
doas.isRunning = false;
}
super.onDestroy();
}`
答案 2 :(得分:0)
onTaskRemoved()
{
if(notif.isChecked()) {
Intent intent1 = new Intent(this, MainActivity.class);
PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent1, 0);
Notification noti = new Notification.Builder(this)
.setContentTitle("S-Dimmer")
.setContentText(getResources().getString(R.string.sDimmerStopped))
.setSmallIcon(R.drawable.ic_action_name1)
.setContentIntent(pIntent).getNotification();
noti.flags = Notification.FLAG_NO_CLEAR;
NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
nm.notify(0, noti);
doas.isRunning = false;
}
}