2016-08-12 4 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

«Запретить андроид для запуска другого экземпляра приложения» - будет только один экземпляр вашего * приложения *. Может быть более одного экземпляра * действия *. Активность - это не приложение. – CommonsWare

ответ

3

Не создавайте новую тему, чтобы начать новую деятельность. Этот код должен быть выполнен в потоке пользовательского интерфейса.

@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

это нормально, если я начинаю новую активность внутри 'OnPostExecute' AsyncTask? – PYPL

+0

явно намного лучше. Однако я предлагаю создать «канал связи» между вашим потоком и потоком пользовательского интерфейса. Например, вы можете использовать Handler https://developer.android.com/training/multiple-threads/communicate-ui.html – Lino

Смежные вопросы