RemoteException发送setActive(false)通知 - 随机活动关闭

时间:2013-03-23 20:15:28

标签: android android-activity

我正在开发一款简单的Android游戏应用。在我的主要活动(用于播放的活动)期间,当验证条件时,在1/2秒之后,我想停止当前活动并重新启动它。游戏有时效果很好,经常,随机,它崩溃“没有错误”[它不会重新启动活动,但它关闭视图返回到游戏菜单活动(用于菜单,选项等的活动.. 。)。

以下是问题发生时的一段代码:

if(scoreManager.isEndGame()){
                    final Handler mHandler = new Handler();
                    Runnable mUpdateTimeTask = new Runnable() {
                        public void run() {
                            long remainingTime = scoreManager.getSecondsUntilFinished();
                            scoreManager.setRemainingTime(remainingTime*1000);
                            finish();
                            startActivity(getIntent());
                        }

                    };
                    mHandler.postDelayed(mUpdateTimeTask, 500);
                }

scoreManager 包含一个CountDownTimer,在每次重新启动时都会使用remainingTime(在onCreate()上实例化)。

在LogCat上我读到:

  

InputMethodManagerService:发送了RemoteException   setActive(false)通知pid 18494 uid 10062

     

I / ActivityManager:显示com.myproject.activities / .MenuActivity:   + 774毫秒(总计+ 3s697毫秒)

基本上,活动经常被破坏而且没有重新启动。 没有异常被抛出。我在“HTC Desire”上测试了这个问题。

请帮忙。

1 个答案:

答案 0 :(得分:1)

解决!!!

最后我发现了问题,它是关于主要活动的“onCreate”方法。 尝试随机设置背景图像,有时所选图像的分辨率太大(1024x768或更大)(R.drawable.background_3和R.drawable.background_5),因此主要活动被中断并返回到MenuActivity。我解决了将所有背景图像的分辨率设置为640x480。

 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    try{
       //stuff...

       //set background
       LinearLayout linLay = (LinearLayout) findViewById(R.id.mainLayout);
      linLay.setBackgroundResource(getBackgroundCode(new Random().nextInt(12)));

       //other stuff...
    }catch(Exception e){
        Log.e("MainPlayActivity", "onCreate() - Error during cretion. Exception: "+e.getMessage(), e);
    }
}



private int getBackgroundCode(int n){

    int result=0;

    switch (n){
    case 0:
        result = R.drawable.background_0;
        break;
    case 1:
        result = R.drawable.background_1;
        break;
    case 2: 
        result = R.drawable.background_2;
        break;
    case 3: 
        result = R.drawable.background_3;
        break;
    case 4: 
        result = R.drawable.background_4;
        break;
    case 5: 
        result = R.drawable.background_5;
        break;
    case 6: 
        result = R.drawable.background_6;
        break;
    case 7: 
        result = R.drawable.background_7;
        break;
    case 8: 
        result = R.drawable.background_8;
        break;
    case 9: 
        result = R.drawable.background_9;
        break;
    case 10: 
        result = R.drawable.background_10;
        break;
    case 11: 
        result = R.drawable.background_11;
        break;
    default :
        result = R.drawable.background_0;
    }
    return result;
}