android - 在android中,我想在一段时间之后调用一个线程

  显示原文与译文双语对照的内容
0 0

我想在一个时间间隔( 如 5/10 ) 之后调用 android Activity 中的线程。 之后,我想在android中发送一个自动短信,任何数字。 请帮助我。我知道我们可以以做的线程,但是这个函数的问题是,它是一次性的调用。 先谢谢了

它只是那个代码,但是一旦调用,然后再次发送短信直到我们停止应用程序。 请 帮助 我 。

Thread timer = new Thread() 
 {
 @Override
 public void run() 
 {
 try 
 {
 sleep(1000*60*2);
 } 
 catch (InterruptedException ex) 
 {
 ex.printStackTrace();
 } 
 finally 
 {
 String phone_number ="123456789";//some phone number here
 String text = 
"Hello this is an automatic SMS service informing you about the current status: n" +
" City :" +cityName +"n"
 +"State :" +stateName+"n"
 +"Country :" +countryName +"n";
 SmsManager smsMgr = SmsManager.getDefault();
 smsMgr.sendTextMessage(phone_number,"Hussnain Muavia", text, null, null);
 txtLat.setText("SMS Sent");
 }
 }
 };
 timer.start(); 
时间:原作者:4个回答

0 0

我将使用一个计时器的计时器:

TimerTask myTimerTask = new TimerTask() {
 public void run() {
//do your code here
 }
};
Timer myTimer = new Timer();
myTimer.schedule(myTimerTask, when you want to start?[im milliseconds for example], 300000[5mins]);

而且,如果你不想再次执行 TimerTask,只需调用。 myTimer.cancel() ;

注意:如果你在你的onPause 中不忘记调用 myTimer.cancel();,否则计时器会继续执行,这将耗尽电池 !

关于注释 myTimer.schedule的更新可以采用各种参数。 有趣的是你

myTimer.schedule(Runnable r, When to first execute, In which Interval);

Runnable r 是你的试用版,将在以后执行 When to first execute 过期如果你想立即启动,只需通过 0. 如果你在那里放入,那么你的任务会每 50毫秒执行一次,后 When to first execute 过期。

这 玩意 很 有用.

希望它有帮助) !

原作者:
0 0

用安卓方式做。 使用 AlarmManager 设置重复操作,然后创建自定义 BroadcastReceiver 来执行特定操作。 这是示例如何实现。 更复杂,但更可靠和安卓的自然方式。

原作者:
0 0

你想使用 AlarmManager插件,这是Android的方式。 所有你会遇到麻烦的东西。 不要使用 Handler.postDelayed 因为当活套在计时器出现之前退出时,该回调将被删除:

如果Runnable成功放置到消息队列中,则返回 true 。 当失败时返回 false,通常是因为活套处理消息队列正在退出。 请注意,true的结果并不意味着如果活套在消息发生之前退出,则可以以处理 -- 。

创建警报很容易。

AlarmManager am = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(context, Alarm.class);
PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0);
long FIVE_MINS_IN_MILLIS = 1000 * 60 * 5;
am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), FIVE_MINS_IN_MILLIS, pi); 
原作者:
...