android 제스처 잠금 해제-------백그라운드 복구 후 제스처 잠금 해제 시작
11509 단어 옮겨 싣다
우선 백엔드에서 프론트 데스크톱의 동작 해제를 복원해야 하는 모든activity를 위해baseActivity를 작성해야 한다. 이baseActivity에서 그 몇 가지 방법을 다시 쓰기 전에 분석,activity의 성명 주기를 작성해야 한다.우리가 리셋 키를 눌렀을 때activity는onpause->onstop->ondestory를 실행하고, 리셋 프로그램은oncreate->onstart->onresume를 실행합니다.홈키를 눌렀을 때 온파우스트->onStop을 실행하고 리셋 앱은 온리스타트->onstart->onresume를 실행합니다. 온스톱 방법, 온스타트 방법, 온파우스 방법과 온리소스 방법을 모두 실행한다는 것을 명확히 할 수 있습니다. 여기서 온스톱 방법, 온리소스 방법 두 가지 방법을 골라서 리셋을 합니다. 온스톱 방법에서 해야 할 일은 이 앱이 아직도 프론트에서 실행되고 있는지 판단하는 것입니다.그리고 로고 위치로 이미 백스테이지에 기록되어 있습니다.resume 방법에서 로고 위치를 판단합니다. 백엔드에서 실행되면 제스처activity를 시작하십시오. 그렇지 않으면 아무런 조작도 하지 않습니다.
BaseActivity 코드는 다음과 같습니다.
public class BaseActivity extends FragmentActivity {
static boolean isActive = true;
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
if (!isAppOnFreground()) {
Log.d("sqq", "back");
isActive = false;
}
}
@Override
protected void onResume() {
super.onResume();
if (!isActive) {
//
isActive = true;
Intent n = new Intent(this, LoginActivity.class);
startActivity(n);
finish();
}
}
/**
*
*
* @return
*/
public boolean isAppOnFreground() {
ActivityManager am = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE);
String curPackageName = getApplicationContext().getPackageName();
List app = am.getRunningAppProcesses();
if (app == null) {
return false;
}
for (ActivityManager.RunningAppProcessInfo a : app) {
if (a.processName.equals(curPackageName) &&
a.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
return true;
}
}
return false;
/*ComponentName cn = am.getRunningTasks(1).get(0).topActivity;
if(!TextUtils.isEmpty(curPackageName)&&curPackageName.equals(getPackageName())){
return true;
}
return false;*/
}
/**
*
*/
private boolean isScreenOFF() {
/**false */
boolean isScreenOff = false;
/**true */
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
isScreenOff = pm.isScreenOn();
return !isScreenOff;
}
}
매번 프론트 데스크를 복구할 때마다 제스처를 검증해야 합니다.
LoginActivity
의 실현은 다음과 같다.public class LoginActivity extends Activity {
private LocusPassWordView lpwv;//
private TextView tvtitle;
private String password;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
lpwv = (LocusPassWordView) this.findViewById(R.id.mLocusPassWordView);
tvtitle=(TextView)findViewById(R.id.tv_locktitle);
tvtitle.setText(R.string.str_lockpatterntitle);
lpwv.setOnCompleteListener(new LocusPassWordView.OnCompleteListener()
{
@Override
public void onComplete(String mPassword)
{
SharedPreferences settings = getSharedPreferences(
"USERINFO", Context.MODE_WORLD_READABLE );
password=settings.getString("pattern_password", "");
if(password.equals(mPassword))
{
Intent intent = new Intent(LoginActivity.this, SmartDoorMainActivity.class);
startActivity(intent);
LoginActivity.this.finish();
}
else
{
tvtitle.setText(R.string.str_input_err);
lpwv.clearPassword();
}
}
});
}
}
Loginactivity는 제스처를 입력하는 페이지입니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ReactNative 오류 캡처 및 처리발행 패키지를 자주 사용해 테스트를 하는 개발자들은 발행 버전에서 스크립트 오류가 발생하면 바로 비켜나는 것을 발견할 수 있다.우리는 이러한 오류를 포착하여 사용자에게 합리적인 힌트를 주고 오류의 상세한 정보를 수집...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.