我想创建一个运行特定时间间隔的应用程序。
[已编辑] 按特定时间间隔,我的意思是用户从Play商店下载应用程序。 他可以查看所有功能和功能固定的时间段,只说X小时。之后,我们可以设置任何类型的限制(任何UI /导航限制,以便用户无法查看功能)。
[问题]
最简单,最有效的方法是什么?就像我不认为这些解决方案可行:
Calendar c = Calendar.getInstance();
int seconds = c.get(Calendar.SECOND);
或者
Time now = new Time();
now.setToNow();
放置限制的最佳方式是什么(应用程序端或服务器端,正如我在某些游戏应用程序中看到的那样,在服务器和应用程序之间进行同步,以便用户不能简单地更改时间和访问功能)。
答案 0 :(得分:1)
因此,如果您想在第一次运行中运行您的应用程序一段时间,则需要保留第一次运行的跟踪。因此,您可以设置一个首选项变量,以便它可以告诉您它是否是第一次运行。
现在设置CountDownTimer
并将其设置为运行一小时,当计时器结束时,通过调用finish()
来关闭活动。
SharedPreferences pref = getSharedPreferences("ApplicationTag", Activity.MODE_PRIVATE);
if (pref.contains("FIRST_LAUNCH")){
finish(); // As you want, it can't be used if the application launches second time.
} else {
// Set the first launch flag to true.
pref.edit.putBoolean("FIRST_LAUNCH", true).commit();
// Start the count down timer
new CountDownTimer(3600000, 1000) {
public void onTick(long millisRemaining) {
// Do nothing
}
public void onFinish() {
// Finish the Activity
finish();
}
}.start();
所以你可能会想,如果我在活动之间切换会怎样。因此,在这种情况下,您创建一个BaseActivity
类,该类将由您的应用程序中的其他活动进行扩展。将CountDownTimer
代码放在那里,并参考您所在的Context
,然后在计时器结束时调用context.finish()
。
因此,如果您不想限制首次启动的用户,则需要在应用程序中以某种方式节省时间。 Activity
完成后,您将在onDestroy
函数中获得回调。因此,覆盖onDestroy
函数并再次设置一些首选项,剩余时间为mili秒。这样您就可以在应用程序启动时再次初始化计时器。
希望有所帮助!
答案 1 :(得分:0)
尝试设置警报,以便在您需要任何时间后触发任何活动。如下:
calendar = Calendar.getInstance();
Intent intent = new Intent(this, ActivityYouWantToStart.class);
PendingIntent pIntent = PendingIntent.getBroadcast(this, 101, intent, 0);
AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
calendar.add(Calendar.Hour,1);
alarm.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pIntent);
当用户第一次启动您的代码时,请调用此代码,并在ActivityYouWantToStart.class
内部执行您想要在这么长时间后执行的任何操作。