2016-08-12 3 views
0

내 앱이 하나의 인스턴스 만 실행하도록 만들 수 없습니다. 앱을 시작하기 위해 앱을 누르고 홈 버튼을 누른 다음 앱을 누르면 다른 인스턴스가 시작됩니다. 새 인스턴스를 시작하기 전에 이전 인스턴스가 삭제되지 않습니다. 응용 프로그램이로드 될 때 나는 그것을 닫습니다 버튼을 다시 누른 다음 다른 인스턴스는 ... 바로 첫 번째를 닫은 후안드로이드가 다른 앱 인스턴스를 시작하지 못하도록

의 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

"앱의 다른 인스턴스를 시작하지 못하도록 안드로이드 금지"- 앱 * 인스턴스가 하나만 있습니다. * 활동 * 인스턴스가 둘 이상있을 수 있습니다. 활동은 앱이 아닙니다. – 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

관련 문제