android在关闭应用程序或重启设备时调用方法

android在关闭应用程序或重启设备时调用方法,android,sharedpreferences,ondestroy,Android,Sharedpreferences,Ondestroy,我试图让我的应用程序在手动关闭应用程序或重启设备时节省计时器的时间,但我的代码似乎不起作用 我做错了什么?如果我将下面的方法分配给按钮,onCreate就可以工作。我只是无法让它在应用程序关闭时自动启动 protected void onDestroy() { final Chronometer chrono9 = (Chronometer) findViewById(R.id.chronometer1); SharedPreferences setting

我试图让我的应用程序在手动关闭应用程序或重启设备时节省计时器的时间,但我的代码似乎不起作用

我做错了什么?如果我将下面的方法分配给按钮,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));

您是否正在将其实现到服务中。。。???你要做的是实现一个服务,当用户关闭应用程序时,该服务将开始运行,你还必须实现一个广播接收器,以便你知道手机何时重新启动

这将是一节课

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>


如果还有任何问题,我将非常乐意提供帮助

在我的特殊情况下,我最后要做的是以我开始使用的相同方法将计时器存储在共享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));


你能发布从共享首选项中获取“时间”的部分吗?检查你如何读取共享首选项中的值。onDestory()还将执行最终清理,您的首选项也将保存在onPause/onStop中。我添加了我的onCreate,它从保存的首选项中获取时间。当我用一个按钮将时间手动存储在已保存的首选项中时,这部分就起作用了。我只是无法让它在应用程序关闭时自动存储。谢谢你的帮助。这实际上不是一项服务,它只是一个简单的计时器,我在我的主要布局运行。我可以让它工作,如果我用一个按钮存储时间,我只需要一种方法,使存储到保存的首选项的方法在应用程序关闭时自动启动。
        chrono1 = (Chronometer) findViewById(R.id.chronometer1);

...
        chrono1.start();