我有一个非常快速的问题。
每当用户下载我的应用时,由于某种原因,音量为零。我想在用户输入第一次时间的应用时提高音量,并更新一些内容。每当创建应用程序时,我希望增加用户量,用户可以稍后更改。如果用户离开应用程序(主菜单)并返回,则不应执行该代码。
所以,我以为我会使用Application类:
那不起作用,因为要做我前面提到的更新,我需要调用一个非静态方法。为此,我将创建该方法所在类的对象,并从那里调用它。
问题在于之前从未调用过该方法,因此它有很多空对象。因此,将出现空指针异常。
那么,我怎样才能做到这一点?如果用户在关闭应用程序后回来或者是用户第一次下载应用程序,则只会增加音量。如果应用程序仍在后台打开,则无关紧要。
我还需要在应用程序启动时从那里调用另一个方法...这将获得nullpointerexception。所以现在我迷路了。我怎样才能做到这一点?
谢谢,
Ruchir
答案 0 :(得分:0)
您可以查看活动生命周期。
http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle
您可以在启动器活动中使用onStart方法,并确保所有内容都不为空。
如果只在每个设备的应用程序的第一次启动时发生这种情况,您可以在启动时将sharedPreference设置为true,并在onStart的开头设置,您可以检查该值。 您可以检查SharedPreference是否具有该特定值。
http://developer.android.com/reference/android/content/SharedPreferences.html
答案 1 :(得分:0)
实际上,在没有任何用户交互的情况下更改音量将是糟糕的用户体验。但是回答这个问题。您可以使用SharedPreferences
当您的应用开始时:
Context context = getActivity();
SharedPreferences sharedPref = context.getSharedPreferences("com.example.myapp.PREFERENCE_FILE_KEY", Context.MODE_PRIVATE);
int defaultValue = 0;
long openedState = sharedPref.getInt("isAppOpenedBefore", defaultValue);
if (defaultValue == openedState)
{
// First launch
// Change volume
// Writing app already opened state
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt("isAppOpenedBefore", 1);
editor.commit();
}