public class Repository {
public static AlarmManager alarmManager;
public static void initAlarmManager(Context context){
//start the update alarm manager
Intent resultIntent = new Intent(context,AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarmManager.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, 0, 60 * 60 * 1000, pendingIntent);
}
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if(Repository.ddfDb == null){
Repository.initDdfDb(context);
}
if(Repository.alarmManager == null){
Repository.initAlarmManager(context);
}
for(Episode episode : Repository.ddfDb.getListOfNextEpisodes()){
Notification.showNotification(context,episode);
}
}
因为我的AlarmManager应该一直运行,所以当引导完成时,我也让他启动。为此,我在清单文件中添加了以下内容:
<receiver android:name=".AlarmReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
我在MainActivity的onCreate()中运行函数initAlarmManager()。因此,如果应用程序启动,AlarmManager也会启动,一切都很好。即使我通过主页按钮关闭我的应用程序或通过“在最近的应用程序之间进行更改”按钮切换到另一个应用程序,我的AlarmManager仍然会激发,尽管我的应用程序在后台,但我仍然会收到通知。
我还在AlarmReceiver中运行函数initAlarmManager()。因此,如果我重新启动我的手机,接收器会被呼叫,看到我的AlarmManager是空的,然后输入它。所以这里的一切都很好。
那么,是不是真的没有办法实现我一直运行的AlarmManager或者如果有办法,我该如何实现呢?
提前感谢!
我通过以下方式解决了这个问题:
我把我在BroadcastReceiver中做的所有操作都转移到了IntentService中。BroadcastReceiver现在所做的就是启动这个intentService。
当应用程序现在通过从最近的应用程序菜单中移开关闭时,我的通知仍然弹出。
我一直在使用Phonegap开发一个Android应用程序,现在我想让它在应用程序关闭时仍然可以在应用程序中执行java/js代码。所以我知道我需要创建一个服务。如果我在phonegap上创建服务插件,我还能执行javascript代码还是只执行java? 有人做过这样的事情吗?我发现了这个讨论,但似乎没有用:http://groups.google.com/group/phonegap/brow
如何在应用程序关闭后保存arraylist。这是我的环球班 这是我的旅行班 我想保存数组列表,当我关闭和打开应用程序的数组列表(所有旅行)被保存。如何做到这一点? 我想使用共享首选项,但我不知道如何做到这一点,因为它不是带有Trip的字符串it数组列表。有人能帮我在共享首选项中保存arraylist吗?
我想在android应用程序中做后台服务,即使当应用程序处于关闭、杀死或后台状态时,它也应该始终保持运行,我目前有后台服务,当应用程序最小化时,它工作得很好,但当我关闭应用程序时,杀死应用程序时,它不工作。如果应用程序死亡,套接字是关闭的,即使我使用了android隔离进程true... 我想让套接字在任何情况下都可用
Updtaed MainActivity.cs 提前谢了。
我正在编写一个带有ExecutorService的单例类的SDK。它看起来像这样: 此SDK类用于在整个应用程序中运行任务/可运行程序,doSomething()函数用于在单个线程中排队并运行所有可运行程序。 但有一件事我搞不清楚,那就是什么时候给ExecutorService打电话。shutdown()方法。如果我这样称呼它: 它会破坏使用一个Thread的目的,因为如果在第二次调用doThin