android秒表/计时器应用程序 - 当时间用完时切换回应用程序

时间:2014-05-22 13:24:28

标签: java android service timer stopwatch

我正在开发一个应用程序,如标题中所述。即使用户启动/切换到另一个应用程序,我也需要以某种方式管理该应用程序将运行/计时。好吧,正如我从stackoverflow.com上的另一个讨论中了解到的那样,没有必要创建在后台工作的服务,并且无需负担处理器,以及在app不活动时计算时间。

需要做的就是在用户切换到另一个应用程序时存储当前时间,将其与切换回来的时间进行比较,并根据这些时间之间的差异更新UI。这是秒表模式的。在计时器模式下,我需要根据时间自动切换回应用程序,即应用程序的UI显示何时进入后台。什么是适合此的最佳解决方案,你能给我一些简单的例子吗?

2 个答案:

答案 0 :(得分:1)

使用AlarmManagerAlarmManager允许您安排任务并在被解雇时收到通知。

答案 1 :(得分:0)

因此请使用AlarmManager

public class MainActivity extends Activity
{
   @Override
   public void onCreate(Bundle savedInstanceState) 
  {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            //call function where you want
            timeout();
  }

public void timeout()
{       //time in milliseconds 1 minute
        Long time = new GregorianCalendar().getTimeInMillis()+60*1000; //i.e.60*1000=1minute
        // create an Intent and set the class which will execute when Alarm triggers, here we have
        Intent intentAlarm = new Intent(this, AlarmReciever.class);
        AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        alarmManager.set(AlarmManager.RTC_WAKEUP,time, PendingIntent.getBroadcast(this,1,  intentAlarm, PendingIntent.FLAG_UPDATE_CURRENT));

    }
}

这是广播课程:

 public class AlarmReciever extends BroadcastReceiver
 {
     @Override
        public void onReceive(Context context, Intent intent)
        {
                // show dialog or what you want

         }

}

别忘了编辑AndroidMainfest:

 //permission
 <uses-permission android:name="com.android.alarm.permission.SET_ALARM"/>
 //our receiver
 <receiver android:name=".AlarmReciever"/>