kum*_* DK 8 java android alarmmanager timertask android-handler
我正在尝试构建一个Android应用程序,它将每10分钟重复运行一些进程.我发现Handlers比定时器或安排更可靠.因此,我将Handlers使用下面给出的代码来开发我的应用程序.
我有点担心以下代码会Handlers在每次启动应用程序时创建单独的并保持并行运行,可能是因为我正在创建Handleron onCreate.
那么,一次只Handler在背景中保持一次运行的最佳方法是什么?
private Handler handler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
handler = new Handler(); // new handler
handler.postDelayed(runnable, 1000*60*10); // 10 mins int.
setContentView(R.layout.activity_pro__sms);
}
private Runnable runnable = new Runnable() {
@Override
public void run() {
/* my set of codes for repeated work */
foobar();
handler.postDelayed(this, 1000*60*10); // reschedule the handler
}
};
Run Code Online (Sandbox Code Playgroud)
您可以扩展Application类并在其中完成工作.
public class App extends Application {
private Handler handler;
@Override
protected void onCreate() {
super.onCreate();
handler = new Handler(); // new handler
handler.postDelayed(runnable, 1000*60*10); // 10 mins int.
setContentView(R.layout.activity_pro__sms);
}
private Runnable runnable = new Runnable() {
@Override
public void run() {
/* my set of codes for repeated work */
foobar();
handler.postDelayed(this, 1000*60*10); // reschedule the handler
}
};
}
Run Code Online (Sandbox Code Playgroud)
并在清单中声明你的课程:
<application android:name=".App">
Run Code Online (Sandbox Code Playgroud)
编辑
但它只有在您的应用程序运行时才有效,否则您可以使用AlarmManager.
我决定回答我自己的问题,因为我已经找到了正确的方法。安卓方式。首先,我试图做并在问题中发布的是对我的要求的错误方法。现在我发布这个,所以其他人不会以错误的方式做,而是以下面的方式做。
Android 几乎没有计时选项。
计时器任务 -> 在应用程序处于活动状态时运行。最适合短期计时。资源使用率更高。
处理程序 -> 在应用程序处于活动状态时运行。但不适合用作调度程序。(这是我问的,这不是正确的方法)。Handlers是重复做某事直到应用程序被杀死的最佳方式。
这是我想出来的。如果我错了纠正我。