2016-12-27 1 views
1

Я новичок в android.I'm создаю приложение, в котором я должен отключить кнопку после ее нажатия и снова включить ее через 5 минут. Таймер обратного отсчета должен продолжаться даже после закрытия приложения. любая помощь приветствуется. Заранее спасибо!Как отключить кнопку после нажатия на кнопку 5 минут в Android

+0

Попробуйте использовать обработчик –

+0

@ ρяσѕρєяK будет работать обработчиком, если приложение закрыто? – Mrinmoy

+0

Нет, обработчик остановится при закрытии приложения –

ответ

5

Вы можете сохранить время в общем предпочтении по следующему коду.

SharedPreferences settings = c.getSharedPreferences(PREFS_NAME, 1); 
SharedPreferences.Editor editor = settings.edit(); 
editor.putString("click_time", your_time); 

Когда вам нужно сравнить, просто сравните текущее время со временем, которое вы предпочитаете. Проверьте, не отличается ли разница между временем менее 5 мин.

чтобы получить время от prefernce:

SharedPreferences settings = c.getSharedPreferences(PREFS_NAME, 1); 
    String storedTime=settings.getString("clic_time", ""); 

Получить разницы в минуту:

Date current, Date previous; 
    long diff = current.getTime() - previous.getTime(); 
    long minutes = diff/(60 * 1000); 

Чтобы показать таймер, когда приложение поставляется из фона, вы можете получить время от предпочтений и начать таймер с помощью разница между 2 раза.

+1

Мне было лениво написать это, я бы использовал одно и то же решение. Просто сохраните время, когда снова включить кнопку. Используя простой таймер и перестройте его 'onCreate', чтобы закончить в сохраненное время. Нет необходимости использовать Сервис ни в чем. – AxelH

-1

Попробуйте Handler

Handler handler = new Handler(); 
Runnable runnable = new Runnable() { 
    @Override 
    public void run() { 

     // this will disable your button 
     yourButton.setEnabled(false); 
    } 
}; 


yourButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      // wait for 5 minutes 
      handler.postDelayed(runnable, 5*60*1000); 

     } 
    }); 
0

1) создать службу и поместить код таймера в нем

2) в службе, после того, как ваше время закончил вещать умысел

3) в вашем активность записывает широковещательный приемник и в широковещательный приемник. Включите кнопку снова.

для запуска службы после закрытия приложения смотреть на: How to keep a service running in background even after user quits the app?

для отправки намерения от службы к деятельности взглянуть на: send intent from service to activity

испытывались кодов

1) создание службы:

public class TimeService extends IntentService { 
    public TimeService() { 
     super("TimeService"); 
    } 

@Override 
protected void onHandleIntent(Intent intent) { 

    //Your Time Code 

    //broadcast intent in your app 
    Intent RTReturn = new Intent(MainActivity.RECEIVE); 
    RTReturn.putExtra("state", "done"); 
    LocalBroadcastManager.getInstance(this).sendBroadcast(RTReturn); 
} 

2) Ваша деятельность

-create действие Строка

//Your activity will respond to this action String 
public static final String RECEIVE = "TIMING"; 

-create BroadcastManager

private LocalBroadcastManager bManager; 

-Создание BroadcastReceiver

private BroadcastReceiver bReceiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     if(intent.getAction().equals(RECEIVE)) { 
      String serviceString = intent.getStringExtra("state"); 
      if(serviceString.equals("done")) 
       // enable your button 
       btnEnable(); 
     } 
    } 
}; 

-Положите намерения фильтра в OnCreate()

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

     //make an intent filter 
     bManager = LocalBroadcastManager.getInstance(this); 
     IntentFilter intentFilter = new IntentFilter(); 
     intentFilter.addAction(RECEIVE); 
     bManager.registerReceiver(bReceiver, intentFilter); 


    } 

добавить его в кнопку на мыши

//start time service 
Intent intent = new Intent(this,TimeService.class); 
startService(intent); 

в конце помнить две вещи:

первый -> добавить службу в свой манифест

второй -> незарегистрированный вещательный приемник в OnDestroy()

0
private long mLastClickTime = 0; 

public static final long MAX_CLICK_INTERVAL = 1000; // here you can pass the time interval you want the user to wait for the next click 

// and paste the below code on button click 

if (SystemClock.elapsedRealtime() - mLastClickTime < MAX_CLICK_INTERVAL) { 
      return; 
} 
mLastClickTime = SystemClock.elapsedRealtime(); 
+0

Не отправляйте только код. Объясните свое решение. – AxelH

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