2013-12-17 167 views
0

我有一個無線電aac播放器,我在開始時添加了一個啓動畫面,但我只想顯示它一次,因爲如果用戶按下後退按鈕,我的應用程序會停留在具有音樂服務的背景上玩,但當我回到應用程序再次顯示啓動畫面。下面是我實際的啓動畫面代碼:僅顯示啓動畫面一次

screentabs.java

@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
     SharedPreferences.Editor editor = prefs.edit(); 
        editor.putBoolean("first_time", true); 
        editor.commit(); 
    if(radioService!=null) { 
     if(!radioService.isPlaying() && !radioService.isPreparingStarted()) { 
      //radioService.stopSelf(); 
      radioService.stop(); 

      radioService.stopService(bindIntent); 
      radioService.exitNotification(); 
     } 
    } 
} 

public class Inicio extends Activity { 
     private Handler handler = new Handler() 
     { 
      public void handleMessage(Message msg) 
      { 
       Intent i = new Intent(Inicio.this, ScreenTabs.class); 
       Inicio.this.startActivity(i); 
       Inicio.this.finish(); 
      } 
     }; 

     protected void onCreate(Bundle savedInstanceState) 
     { 
      super.onCreate(savedInstanceState); 

      SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
      if(!prefs.getBoolean("first_time", false)) 
      { 
       /* 
       // we will set this true when our ScreenTabs activity 
        ends or the service playing music is stopped. 
       SharedPreferences.Editor editor = prefs.edit(); 
       editor.putBoolean("first_time", true); 
       editor.commit(); 

       */ 

       Intent i = new Intent(Inicio.this, ScreenTabs.class); 
       this.startActivity(i); 
            this.finish(); 
      } 
      else 
      { 
       this.setContentView(R.layout.inicio); 
       handler.sendEmptyMessageDelayed(0, 2000); 
      } 
     } 
} 

的OnDestroy我可以更改或添加,以顯示啓動畫面只是第一次應用程序啓動?

+0

我將處理程序時間設置爲0以避免重新啓動屏幕。 –

+0

你能給我例子在我的代碼? – alexistkd

+0

使用shref pref,初始化它,然後在每次啓動時檢查該值。如果valye大於您的值,則始終轉到下一個屏幕。 – Dev

回答

2
public class Inicio extends Activity { 
    private Handler handler = new Handler() 
    { 
     public void handleMessage(Message msg) 
     { 
      Intent i = new Intent(Inicio.this, ScreenTabs.class); 
      Inicio.this.startActivity(i); 
      Inicio.this.finish(); 
     } 
    }; 

    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 

     SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
     if(!prefs.getBoolean("first_time", false)) 
     { 
      /* 
      // we will set this true when our ScreenTabs activity 
       ends or the service playing music is stopped. 
      SharedPreferences.Editor editor = prefs.edit(); 
      editor.putBoolean("first_time", true); 
      editor.commit(); 

      */ 

      Intent i = new Intent(Inicio.this, ScreenTabs.class); 
      this.startActivity(i); 
           this.finish(); 
     } 
     else 
     { 
      this.setContentView(R.layout.inicio); 
      handler.sendEmptyMessageDelayed(0, 2000); 
     } 

落實ScreenTabs活動onDestory和服務的onDestroy方法有

@Override 
public void onDestory(){ 
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
    SharedPreferences.Editor editor = prefs.edit(); 
       editor.putBoolean("first_time", true); 
       editor.commit(); 
} 
在服務

@Override 
public void onDestory(){ 
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
    SharedPreferences.Editor editor = prefs.edit(); 
       editor.putBoolean("first_time", true); 
       editor.commit(); 
} 

onDestory

,同樣我們做什麼這裏說的偏好值檢查是否應該顯示Splash的first_time僅設置爲true當ScreenTabs活動結束或音樂播放服務停止時。

+0

請給我一個例子,我也看到它:) – alexistkd

+0

即時通訊錯誤與editor.putBoolean(「show_splash」,false);如果(!prefs.getBoolean(「first_time」,false)) – alexistkd

+0

@alexistkd看到我改變了答案,在實現它之前理解它。 –

1

添加共享偏好與布爾型,使其虛假和第一次醒目頁面後使其真正所以它不會是方法 -

在開始Actitity-

SharedPreferences sharedPref; 
    Context context; 
    boolean isScrennoFill = false; 

而且裏面去下面的OnCreate() -

context = this; 
     /** 
     * get user login preference 
     */ 
     sharedPref = context.getSharedPreferences("savecredentails", 
       MODE_PRIVATE); 
     isScrennoFill = sharedPref.getBoolean("isScrennoFill", false); 

if (isScrennoFill == false) { 

         Intent intent = new Intent(context, 
           SplashPage.class); 
         startActivity(intent); 
        } else { 
         Intent intent = new Intent(context, 
           Next.class); 
         startActivity(intent); 
        } 
+0

可以給我一個例子使用我的實際代碼? – alexistkd

+0

不適用於我,應用程序崩潰 – alexistkd

+0

它應該工作..請發表你的logcat –

0
AndroidManifest.xml您可以在活動中使用 android:noHistory="true"

要禁用回去

+0

沒有運氣與那 – alexistkd

+0

真的嗎?怎麼來?它給你一個錯誤或什麼? –

+0

沒有錯誤只是不斷顯示啓動畫面 – alexistkd