2017-03-03 62 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

相关问题