应用启动时执行某些操作?

时间:2015-11-24 07:57:37

标签: java android string methods nullpointerexception

我有一个非常快速的问题。

每当用户下载我的应用时,由于某种原因,音量为零。我想在用户输入第一次时间的应用时提高音量,并更新一些内容。每当创建应用程序时,我希望增加用户量,用户可以稍后更改。如果用户离开应用程序(主菜单)并返回,则不应执行该代码。

所以,我以为我会使用Application类:

那不起作用,因为要做我前面提到的更新,我需要调用一个非静态方法。为此,我将创建该方法所在类的对象,并从那里调用它。

问题在于之前从未调用过该方法,因此它有很多空对象。因此,将出现空指针异常

那么,我怎样才能做到这一点?如果用户在关闭应用程序后回来或者是用户第一次下载应用程序,则只会增加音量。如果应用程序仍在后台打开,则无关紧要。

我还需要在应用程序启动时从那里调用另一个方法...这将获得nullpointerexception。

所以现在我迷路了。我怎样才能做到这一点?

谢谢,

Ruchir

2 个答案:

答案 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();
}
相关问题