2014-11-24 2 views
1

Итак, мы делаем проект создания приложения для Android, и мы закончили, но поскольку у нас есть время, я хотел реализовать несколько дополнительных вещей. Одна вещь, которую я хочу реализовать, но я не могу найти нигде, как я могу заставить приложение вернуться к основному действию после простоя в течение определенного времени. Время, я планирую предоставить пользователю возможность выбрать это из настроек, но я хочу узнать, как заставить эту функцию работать сначала перед чем-либо еще. Вся помощь была оценена.Вернуться к mainActivity после простоя Android

ответ

7

Вы можете добиться этого с помощью обработчика, как показано здесь.

private Handler handler; 
private Runnable runnable; 

//call in onCreate 
setAppIdleTimeout() 

private void setAppIdleTimeout() { 

    handler = new Handler(); 
    runnable = new Runnable() { 

     @Override 
     public void run() { 
      // TODO Auto-generated method stub 
      runOnUiThread(new Runnable() { 

       @Override 
       public void run() { 
        // Navigate to main activity 
       } 
      }); 
     } 
    }; 
    handler.postDelayed(runnable, timeoutValue * 1000); 
} 

//reset timer on user interaction and in onResume 
public void resetAppIdleTimeout() { 
    handler.removeCallbacks(runnable); 
    handler.postDelayed(runnable, timeoutValue * 1000); 
} 

@Override 
protected void onResume() { 
    // TODO Auto-generated method stub 
    super.onResume(); 
    resetAppIdleTimeout(); 
} 

@Override 
public void onUserInteraction() { 
    // TODO Auto-generated method stub 
    Log.i(TAG, "interacted"); 
    resetAppIdleTimeout(); 
    super.onUserInteraction(); 
} 

@Override 
public void onDestroy() { 
    // TODO Auto-generated method stub 
    handler.removeCallbacks(runnable); 
    super.onDestroy(); 
} 
+0

Вы также можете использовать AsyncTask, хотя на самом деле не нужно в этом случае – Arnab

+0

@Arnab в что AsyncTask вы вызовете Thread.sleep (miliSeconds)? – SilentKiller

+0

Я использовал приведенный выше код, но по какой-то причине, даже несмотря на то, что пользователь взаимодействует с ним, он по-прежнему не работает по истечении времени. Я создал глобальный int 60 для значения тайм-аута и ровно через минуту, он возвращается к основному действию. – user2989280

0

1] Добавить тайм-аут экрана в ваши настройки.

2] Используйте BroadcastReceiver, чтобы вызвать экран ON & OFF situations.You получите ссылку с here

1

вы можете попробовать со следующими способами:

-> Broadcast для ScreenLight ON и OFF

BroadcastReceiver myScreenLightBroadcast = new BroadcastReceiver() { 

    // This will fire whenever Screen Light will be ON or OFF 
    @Override 
    public void onReceive(Context context, Intent intent) { 

      if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) { 
       // Screen Light is On so you can close your all Activity Except your MainActivity 
       // Or you can move user to MainActivity by starting a NewActivity or Restarting Application 
      } else if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { 
       // this will call whenever your Screen will OFF 
      } 

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