0

我有这两种方法,当“something1*”发生时我要暂停这个主要活动,然后在主要活动暂停时更改为 someactivity1*。但我的问题是它不会改变我的活动,它会冻结我的主要活动并且它没有做任何其他事情。这很可能是因为我破坏了线程,但我看不到任何解决方案,我不确定。(方法2在循环中)对不起我的英语并感谢您的帮助

    public void method1(){

      super.onPause();
      run = false;
      while(){
        try{
          thread.join();
        }catch(InterruptedException e){
          e.printStackTrace();
        }
     }

      thread1 = null;

     Intent i = new Intent(someactivity1*);
     startActivity(i);

   }

   //the method2 is inside a loop
   public void method2(){

     if(something1*){

       onPause();

     }

   }
4

3 回答 3

0

你说thread.join()。这使得主线程,也就是 UI 线程,等待被调用的线程thread完成。换句话说,您正在使用它锁定您的应用程序。

你为什么要管理暂停你的应用程序呢?Android 自己管理一切。只需启动活动,不要onPause()在方法中调用任何地方,除了YourActivity.onPause().

于 2012-07-31T19:41:46.943 回答
0

你绝对不应该调用 onPause。这是一个操作系统回调方法。

于 2012-07-31T19:41:47.037 回答
0

暂停活动的不是您,而是操作系统,因此您根本不必调用 onPause() 方法。

我认为当“某事”发生并且前一个活动暂停时,您应该简单地开始另一个活动。希望这有帮助。

于 2012-08-01T09:48:22.380 回答