Java 检查每个应用程序启动的唯一ID签名有什么问题
我希望我的应用程序有唯一的ID,由整数和它的迭代组合而成,而且我希望它每次启动时都是唯一的 比如说 如果它第一次使用zer启动,则在完成之前增加它,并使用新的walue启动,在本例中为1 我试图通过sharedPrefs实现它,但是检查Toast显示相同的值(0)为什么 这是我的密码:Java 检查每个应用程序启动的唯一ID签名有什么问题,java,android,sharedpreferences,unique,Java,Android,Sharedpreferences,Unique,我希望我的应用程序有唯一的ID,由整数和它的迭代组合而成,而且我希望它每次启动时都是唯一的 比如说 如果它第一次使用zer启动,则在完成之前增加它,并使用新的walue启动,在本例中为1 我试图通过sharedPrefs实现它,但是检查Toast显示相同的值(0)为什么 这是我的密码: public final String SHARED_PREFS_NAME = "dowolna"; private SharedPreferences prefs; static int valueYouWan
public final String SHARED_PREFS_NAME = "dowolna";
private SharedPreferences prefs;
static int valueYouWant;
onCreate(...) {
.
.
.
prefs = getSharedPreferences(SHARED_PREFS_NAME, Context.MODE_PRIVATE);
valueYouWant = prefs.getInt("lol", 0);
Toast.makeText(getApplicationContext(), String.valueOf(valueYouWant), Toast.LENGTH_SHORT).show();
.
.
.
}
然后
@Override
protected void onDestroy() {
super.onDestroy();
SharedPreferences.Editor edit = prefs.edit();
edit.putInt("lol", valueYouWant++);
edit.commit();
}
尝试在
onPause
中执行,而不是在onestory
中执行。没有必要在活动完成时调用它onPause
肯定会被调用。如果您阅读了onDestroy的,它会显示:
注意:不要指望调用此方法作为保存数据的地方!例如,如果某个活动正在编辑内容提供商中的数据,则这些编辑应在onPause()或onSaveInstanceState(捆绑包)中提交,而不是在此处提交。
如果你看到这个问题,答案是:
只有当系统资源(内存、cpu时间等)不足并决定终止您的活动/应用程序或有人对您的活动调用finish()时,才会调用onDestroy()
因此,没有必要调用ondestory
。您可以使用isFinishing()
方法在onPause
内检查活动是否正在完成