应用关闭时发送通知
当应用完全关闭时,如何以编程方式发送通知?
How is it possible to send a notification programmatically, when the App got completely closed?
示例:用户也在Android Taskmanager中关闭了该应用程序,然后等待.该应用程序应在X秒后或当该应用程序检查更新时发送通知.
Example: The User closed the App, also in the Android Taskmanager, and waits. The App should send a notification after X Seconds or when the App check for Updates.
我尝试使用这些代码示例,但是:
I tried to work with these code examples but:
- 在关闭应用程序时推送通知-活动/操作过多工作
- 如何我可以让我的应用在关闭时发送通知吗?-很多信息,但是我不知道如何处理
- 如何在应用程序处于运行状态时发送本地通知android关闭?-很多信息,但我不知道如何处理
- Pushing notifications when app is closed - too many Activities/doesn't work
- How do I get my app to send a notification when it is closed? - much information, but I don't know how to deal with it
- How to send local notification android when app is closed? - much information, but I don't know how to deal with it
如果可以的话,请尝试以一个示例进行说明,因为初学者(例如我)可以通过这种方式更轻松地学习它.
If you can, try to explain it at an example, because beginners (like me) can easier learn it this way.
您可以使用此服务,只需在活动生命周期中启动onStop()即可.使用此代码:
startService(new Intent(this, NotificationService.class));
那么您可以创建一个新的Java类并将此代码粘贴到其中:
You can use this service all you need to do is Start this service onStop() in your activity lifecycle. With this code:
startService(new Intent(this, NotificationService.class));
then you can create a new Java Class and paste this code in it:
public class NotificationService extends Service {
Timer timer;
TimerTask timerTask;
String TAG = "Timers";
int Your_X_SECS = 5;
@Override
public IBinder onBind(Intent arg0) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.e(TAG, "onStartCommand");
super.onStartCommand(intent, flags, startId);
startTimer();
return START_STICKY;
}
@Override
public void onCreate() {
Log.e(TAG, "onCreate");
}
@Override
public void onDestroy() {
Log.e(TAG, "onDestroy");
stoptimertask();
super.onDestroy();
}
//we are going to use a handler to be able to run in our TimerTask
final Handler handler = new Handler();
public void startTimer() {
//set a new Timer
timer = new Timer();
//initialize the TimerTask's job
initializeTimerTask();
//schedule the timer, after the first 5000ms the TimerTask will run every 10000ms
timer.schedule(timerTask, 5000, Your_X_SECS * 1000); //
//timer.schedule(timerTask, 5000,1000); //
}
public void stoptimertask() {
//stop the timer, if it's not already null
if (timer != null) {
timer.cancel();
timer = null;
}
}
public void initializeTimerTask() {
timerTask = new TimerTask() {
public void run() {
//use a handler to run a toast that shows the current timestamp
handler.post(new Runnable() {
public void run() {
//TODO CALL NOTIFICATION FUNC
YOURNOTIFICATIONFUNCTION();
}
});
}
};
}
}
此后,您只需要将服务与manifest.xml结合起来即可:
After this you only need to combine the service with the manifest.xml:
<service
android:name=".NotificationService"
android:label="@string/app_name">
<intent-filter>
<action android:name="your.app.domain.NotificationService" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</service>