我正在尝试构建一个Android应用程序,它将每10分钟重复运行一些进程.我发现Handlers
比定时器或安排更可靠.因此,我将Handlers
使用下面给出的代码来开发我的应用程序.
我有点担心以下代码会Handlers
在每次启动应用程序时创建单独的并保持并行运行,可能是因为我正在创建Handler
on 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 } };
Bracadabra.. 6
您可以扩展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 } }; }
并在清单中声明你的课程:
编辑
但它只有在您的应用程序运行时才有效,否则您可以使用AlarmManager
.
您可以扩展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 } }; }
并在清单中声明你的课程:
<application android:name=".App">
编辑
但它只有在您的应用程序运行时才有效,否则您可以使用AlarmManager
.