2014-04-04 3 views
0

앱이 수동으로 닫히거나 기기가 다시 시작되지만 코드가 작동하지 않는 경우 앱에 시간을 저장하게하려고합니다.android 앱을 닫을 때 또는 기기를 다시 시작할 때 메소드 호출

내가 뭘 잘못하고 있니? 아래 메서드를 버튼에 할당하면 onCreate가 작동합니다. 앱이 닫히면 자동으로 실행되지 않습니다.

protected void onDestroy() { 
     final Chronometer chrono9 = (Chronometer) findViewById(R.id.chronometer1); 



     SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
     SharedPreferences.Editor editor = settings.edit(); 
     editor.putLong("time", chrono9.getBase()); 
     editor.commit(); 
     super.onDestroy(); 

    } 




protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_mydialog); 





    SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
     Chronometer chrono9 = (Chronometer)findViewById(R.id.chronometer1); 
     chrono9.setBase(settings.getLong("time",11)); 
+0

당신이 "를 얻을 부분을 게시 할 수 공유 환경 설정에서 "시간"? –

+0

sharedPreferances의 값을 읽는 방법을 확인하십시오. 또한 onDestory()는 최종 정리를 수행하기 때문에 onPause/onStop에서 환경 설정을 저장하십시오. – Libin

+0

저장된 환경 설정에서 시간을 가져 오는 create on을 추가했습니다. 이 부분은 버튼을 사용하여 저장된 환경 설정에서 시간을 수동으로 저장할 때 작동합니다. 나는 앱을 닫을 때 자동으로 저장할 수 없다. – user2941841

답변

2

서비스에 구현 하시겠습니까? 당신이해야 할 일은 사용자가 앱을 닫을 때 실행을 시작할 서비스를 구현하는 것입니다. 그러면 언제 전화가 다시 부팅되는지 알 수 있도록 브로드 캐스트 리시버를 구현해야합니다 ...

이것은입니다 수업이 될거야 ...

그리고 이것이 당신의 명단에 간다 ... !!

<receiver android:name="com.solmoviles.tmp.StartMyServiceAtBootReceiver"> 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
     </intent-filter> 
    </receiver> 

더 많은 질문 드리겠습니다. 기꺼이 도와 드리겠습니다.

+0

도움 주셔서 감사합니다. 이것은 실제로 내 주요 레이아웃에서 실행하는 간단한 크로노 미터에 대한 서비스가 아닙니다. 버튼으로 시간을 저장하면 작동하도록 할 수 있습니다. 저장 한 환경 설정에 저장하는 메소드를 작성하여 앱 닫기시 자동으로 실행하는 방법이 필요합니다. – user2941841

0

내가 특별한 경우에했던 일은 내가 시작한 것과 같은 방법으로 크로노 미터를 공유 사전에 저장하는 것입니다.

이제 앱을 다시 시작할 때 시간이 계속되고 앱을 종료했을 때의 위치에서 다시 설정되지 않았습니다. 크로노 미터 시작

내 방법에서

내에서의

... 
    SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
     SharedPreferences.Editor editor = settings.edit(); 
     editor.putLong("time", chrono9.getBase()); 
     editor.commit(); 

... 

작성 :

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
     Chronometer chrono9 = (Chronometer)findViewById(R.id.chronometer1); 
     chrono9.setBase(settings.getLong("time",11)); 

이 ...

 chrono1 = (Chronometer) findViewById(R.id.chronometer1); 

... 
     chrono1.start();