2016-08-12 104 views
0

我無法讓我的應用程序只運行一個實例。當我按下應用程序啓動它,然後按主頁按鈕並按下應用程序啓動另一個實例,在開始新的實例之前,前一個實例未被殺死。當應用程序被加載我按後退按鈕來關閉它,然後另一個實例關閉後的第一個正確的彈出...防止android啓動應用程序的另一個實例

AndroidManifest.xml中

<activity 
    android:name=".StartUpActivity" 
    android:configChanges="orientation|screenSize" 
    android:label="@string/app_name" 
    android:noHistory="true" 
    android:launchMode="singleTask"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 

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

StartUpActivity

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_loading); 

    new Thread(new Runnable() { 
     @Override 
     public void run() { 
      Intent activityIntent; 
      // DO STUFF 
      activityIntent = new Intent(context, RegNewUser.class); 
      startActivity(activityIntent); 
     } 
    }).start(); 
} 
+0

「阻止android啓動另一個應用程序實例」 - 只會有一個* app *實例。可能有多個*活動*的實例。一項活動不是一款應用程序。 – CommonsWare

回答

3

不要創建新線程來開始新的活動。此代碼必須在UI線程中執行。

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_loading); 


    Intent activityIntent; 
    activityIntent = new Intent(context, RegNewUser.class); 
    startActivity(activityIntent); 

} 
+0

是否可以,如果我在AsyncTask的'OnPostExecute'內啓動一個新的活動? – PYPL

+0

顯然好多了。不過,我建議在你的線程和UI線程之間創建一個「溝通渠道」。你可以使用一個Handler https://developer.android.com/training/multiple-threads/communicate-ui.html – Lino

相關問題