当我手动关闭应用程序或重启设备但我的代码似乎不起作用时,我试图让我的应用程序节省计时器的时间。
我做错了什么?如果我将以下方法分配给按钮,则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 :(得分: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>
任何进一步的问题我都非常乐意提供帮助!
答案 1 :(得分: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();