Java 检查每个应用程序启动的唯一ID签名有什么问题

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

我希望我的应用程序有唯一的ID,由整数和它的迭代组合而成,而且我希望它每次启动时都是唯一的

比如说

如果它第一次使用zer启动,则在完成之前增加它,并使用新的walue启动,在本例中为1

我试图通过sharedPrefs实现它,但是检查Toast显示相同的值(0)为什么

这是我的密码:

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
内检查活动是否正在完成