你好我是android和java的新手 我需要帮助 !! 在这段代码中,我正在努力在销毁或停止应用程序后保持倒计时工作(android) 即使我停止申请,我也想让手机锁定 你可以看到下面的代码 我知道我需要onStop();方法,但我不知道在里面键入什么 谢谢提前
public class SetTimeActivity extends AppCompatActivity {
Button set_btn ;
int min ;
EditText setTimerMenu_et;
TextView tv_display ;
DevicePolicyManager devicePolicyManager;
ComponentName componentName;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_set_time);
set_btn = (Button)findViewById(R.id.set_btn);
setTimerMenu_et = (EditText)findViewById(R.id.setTimerMenu_et);
tv_display = (TextView)findViewById(R.id.tv_display);
devicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
componentName = new ComponentName(SetTimeActivity.this , Controller.class);
//-------------------------Clicking SET button---------------------------------
set_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String text = setTimerMenu_et.getText().toString();
if(!text.equalsIgnoreCase(""));
int toMin = Integer.valueOf(text);
min = toMin*60000;
tv_display.setText("The Phone will lock after: " + text + " minute");
CountDownTimer countDownTimer = new CountDownTimer(min,10000) {
@Override
public void onTick(long ms) {
}
@Override
public void onFinish() {//when the timer end the phone will lock
devicePolicyManager.lockNow();
}
}.start();
}
});
}
}`
答案 0 :(得分:0)
倒数计时器代码可以写入服务中。在MainActivity中,使用广播接收器从服务接收广播。
答案 1 :(得分:0)
不是将CountDownTimer
声明为局部变量,而是将其声明为全局变量并将其设为static
static CountDownTimer countDownTimer;
希望它有效。
答案 2 :(得分:0)
你的设计不正确。活动被销毁后,活动组件不应存在。
更好的选择是使用AlarmManager。安排一个警报,您将收到您在待处理意图中提到的Receiver的回调。
https://developer.android.com/training/scheduling/alarms.html
Android: How to use AlarmManager
或者正如jay2109所提到的,您还可以启动一个服务,该服务将管理CountDownTimer并使用它来广播onTick或onFinished等事件,以备不时之需。 (注意:最佳做法是在您的活动onPause和onResume上附加和分离广播接收器。如果您希望用户知道您的应用程序执行了某些操作,您可以使用通知。
https://developer.android.com/training/run-background-service/create-service.html