2017-03-03 164 views
0

我有一個長時間運行的操作。一個線程裏面,我開始喜歡這個當我使用其他應用程序時,Android活動顯示在最前面

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


     new Thread(new Runnable() { 
      @Override 
      public void run() { 

       try { 
        Thread.sleep(5000); 
       } catch (InterruptedException e) { 
        e.printStackTrace(); 
       } 

       runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 
        startActivity(new Intent(MainActivity.this,MainActivity.class)); 
       } 
      }); 
      } 
     }).start(); 
    } 

問題的新活動當我運行其他應用程序和線程結束,該活動出現在屏幕的頂部。如何強制該活動不要在頂部?

+0

'startActivity(new Intent(MainActivity.this,MainActivity.class));'你爲什麼要再次開始當前的活動? –

+0

這是一個例子。在真實情況下,我開始另一個 – Rainmaker

回答

0

,你可以使用如下..

Handler splashHandler; 
splashHandler = new Handler(); 

splashHandler.postDelayed(new Runnable() { 
     @Override 
     public void run() { 

       Intent loginIntent = new Intent(Splash.this, LoginActivity.class); 
       startActivity(loginIntent); 
       finish(); 

     } 
    }, 2000); 



@Override 
public void onBackPressed() { 
    super.onBackPressed(); 
    if (splashHandler != null) 
     splashHandler.removeCallbacksAndMessages(null); 
} 



@Override 
protected void onResume() { 
    super.onResume(); 
    if (splashHandler != null) 
     splashHandler.removeCallbacksAndMessages(null); 
} 
0

發生這種情況是因爲您將上下文從「其他應用程序」中取出。您應該傳入應用程序上下文,而不是本地活動的上下文。使用context.getApplicationContext(),並保存在一個局部變量,然後用此背景下啓動的活動

代碼應該是這樣的:

@Override 
protected void onPostExecute(List<VideoDataDescription> result) { 
    super.onPostExecute(result); 
    MainActivity.progressDialog.dismiss(); 

    context.startActivity(new Intent(context, MainActivity.class)); 
} 

}

你會打電話它是這樣的:

new MyTask(context).execute(); 
+0

不起作用。同樣的行爲 – Rainmaker

相關問題