我创建了一个图像按钮,每天只允许10次点击。现在 我希望使用线程将图像按钮休眠24小时,之后应该允许第二天再次进行10次点击(24小时后)。我应该如何使用线程来按住按钮24小时。请建议我如何解决这个问题。
ActivityTwo.java:
public class ActivityTwo extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_two);
ImageButton playbtn1 = (ImageButton) findViewById(R.id.playButton1);
playbtn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getApplicationContext(), ActivityTwo.class);
startActivity(intent);
intent.putExtra("scoretwo",1);
setResult(RESULT_OK,intent);
}
});
MainActivity.java:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private static final int RC_ACT_TWO = 1;
TextView scoreCount = (TextView) findViewById(R.id.score_points);
String score = scoreCount.getText().toString();
int scorevalue = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageButton viewbtn1 = (ImageButton) findViewById(R.id.view1);
viewbtn1.setOnClickListener(new View.OnClickListener() {@Override
public void onClick(View v) {
Intent intent1 = new
Intent(getApplicationContext(), ActivityTwo.class);
startActivity(intent1);
startActivityForResult(intent1, RC_ACT_TWO);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RC_ACT_TWO) {
if (resultCode == RESULT_OK) {
int incre = 0;
int add = data.getIntExtra("scoretwo", 0);
scorevalue = Integer.parseInt(score);
if (add != 0) {
incre = incre + add;
if (incre > 0 && incre < 11) {
scorevalue = scorevalue + incre;
scoreCount.setText(scorevalue);
}
else {}
}
else {
scoreCount.setText("-1");
}
}
}
}
答案 0 :(得分:0)
以下是一种可能性:您可以使用Android的SharedPreferences
。保存第一次点击的时间戳,以及到目前为止的点击次数..
单击按钮或启动活动时,请检查已保存的点击次数。如果它达到10
,则禁用该按钮。
在活动开始时,还要检查已保存的时间戳。如果超过24小时,请再次重新启用此按钮并重置首选项中保存的点击次数。
有关详细信息,请查看this link。
答案 1 :(得分:0)
Thread.Sleep
自 it put the main thread sleeping for the time you set (so don't use it on the main thread)以来不是一个好方法,它会假设用户24小时开启应用程序
所以
说,一种方法可能是使用SharedPreferences( 这是一种方式,还有许多其他也可能比这更好,但这是第一次出现在我的脑海中 强>)。
现在,使用SharedPreferences(Useful link),存储完成的点击次数和用户点击的日期。
此时,每个应用程序的启动,读取当天和计数。
如果当天与今天相同,请阅读计数,每次用户点击时,添加1.在10,禁用带有消息的按钮(只需添加,如果点击&gt; = 10执行禁用)。
每次用户点击按钮时,将1添加到计数器并将其保存在共享偏好中,同时保存当前日期。
这样你就完成了,因为如果用户今天点击了10次,你将把这个值存储在SharedPreferences中。如果日期已更改,您会注意到SharedPreferences中保存的日期与当天不同。
正如我上面所说,这是一种方式,你可以找到很多其他方法。我在这里只提供有用链接的逻辑,所以你肯定能够自己重现代码,对于任何问题,怀疑我在这里。
答案 2 :(得分:0)
让你的线程进入睡眠状态不是一个好的解决方案。 最好的方法是存储单击图像的次数,为此你有很多解决方案,从sharedPreferences到sql数据库(但如果你存储的唯一数据是这个数字,那么数据库就会过度杀伤)。 p>