2012-08-31 41 views
0

對於android開發來說,我很新,所以請忍受我的無知。Android - MainActivity不斷實例化

我在加載我的主要活動之前創建了一個閃屏。 Splash工作正常,但是造成問題的原因是主要活動,它不斷實例化。

Splash.java

public class Splash extends Activity { 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_splash); 

    final AdController optinController = new AdController(
      getApplicationContext(), "SECTION_ID"); 

    final Splash splash = this; 

    optinController.loadOptin((Activity) splash, "SECTION_ID", 
     new AdOptinListener() { 
      public void onAdOptin() { 
       // once optin process is complete, continue to main app activity 
       launchMain(); 
      } 
     } 
    ); 


} 

public void launchMain() { 
    finish(); 
    Intent myIntent = new Intent(Splash.this, MainActivity.class); 
    myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP); 
    startActivity(myIntent); 
} 
} 

MainActivity.java

public class MainActivity extends Activity { 
private AdController myController; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    myController = new AdController(getApplicationContext(), "SECTION_ID"); 
    myController.loadNotification(); 
} 
} 

在manifest文件中:

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name=".Splash" 
     android:label="@string/title_activity_splash" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name=".MainActivity" 
     android:label="@string/title_activity_main" 
     android:launchMode="singleInstance"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

我用android:launchMode="singleInstance"但STIL它不斷重新實現。

請幫忙。提前致謝。

+0

你是什麼意思通過實例化? – Adam

+0

@Adam無休止地重新開始主要活動。 – NinjaBoy

+1

你是什麼意思,重新啓動主要活動不休?它是否不斷創建活動的多個實例?如果是這樣,你必須找到核心原因並解決它,標誌着singleInstance不是要走的路。 –

回答

0

公共類飛濺延伸活動{

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE);//|Window.FEATURE_INDETERMINATE_PROGRESS 
    setContentView(R.layout.splash); 

    final Timer time = new Timer(); 
    time.schedule(new TimerTask() { 
     @Override  
     public void run() { 
      Intent intent = new Intent(Splash.this,MainActivity.class); 
      startActivity(intent); 
      finish(); 
     } 
    },1000); 
}} 

它會工作,我獲得DIN你到底由instatiating.Also做沒有用的單個實例,你不應該要求它在這裏。

+0

你的意思是我必須在我的清單文件中刪除android:launchMode =「singleInstance」? – NinjaBoy

0

是的,以下是我的清單文件片斷,只需使用定時器爲您的啓動畫面,並在特定時間後移動到您的主類。

活動機器人:名字= 「潑水節」。 機器人:screenOrientation = 「肖像」 機器人:標籤= 「@字符串/ APP_NAME」>

0

我認爲你必須刪除意圖標誌Intent.FLAG_ACTIVITY_SINGLE_TOP

0

在manifest.xml中,將類別設置爲LAUNCHER,您希望首先啓動哪個活動,並將其他設置爲DEFAULT,如下例所示。

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name=".Splash" 
     android:label="@string/title_activity_splash" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name=".MainActivity" 
     android:label="@string/title_activity_main" 
     android:launchMode="singleInstance"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 
</application>