2014-04-04 84 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

我添加了我的创建,从保存的偏好中获取时间。当我用按钮手动将时间存储在保存的首选项中时,这部分工作。我无法在应用程序关闭时自动将其存储。 – user2941841

回答

2

你是否在实施这项服务......?你需要做的是实现一个服务,当用户关闭应用程序时开始运行,并且你将不得不实现一个广播接收器,这样你就能知道手机什么时候重新启动...

这是将成为一个类...

public class StartMyServiceAtBootReceiver extends BroadcastReceiver { 
@Override 
public void onReceive(Context context, Intent intent) { 
    Intent startServiceIntent = new Intent(context, MyService.class); 
    context.startService(startServiceIntent); 
} 

这和你的清单...... !!

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

还有其他问题我会很乐意帮忙的!

+0

感谢您的帮助。这实际上不是一个服务,它只是一个简单的天文台,我已经在我的主要布局中运行。如果我使用按钮存储时间,则可以使其工作,我只需要一种方法将其存储到保存的偏好设置中以在应用关闭时自动触发。 – user2941841

0

在我的特殊情况下,我所做的就是将存储在共享的pref中的天文钟与我开始使用的方法相同。

现在,当我重新启动我的应用程序时,时间继续滴答滴答,并没有从关闭应用程序时的位置重置。

在我的方法是开始记时计:

... 
    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(); 
相关问题