我已閱讀Android文檔(Android新手在這裏),但通常會有大量關於如何獲取當前前景活動的文章和問題(例如,here, here,並here)以及如何運行每隔X分鐘/秒(例如here,here,here和here)的命令,但我似乎無法管理兩個之間按鈕點擊結合起來。Android:一旦用戶點擊按鈕,每10秒獲取當前前景活動
此任務的目的是,一旦用戶點擊一個開始按鈕時,當前活動被顯示在屏幕上,通過一個Toast
,每10秒。一旦用戶點擊停止,Toast
停止彈出。
我設法讓當前的活動,使用下面的代碼會顯示每10秒:
Calendar cal = Calendar.getInstance();
Intent i = new Intent(context, SimpleService.class);
PendingIntent pintent = PendingIntent.getService(this, 0, i, 0);
AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
// Start every 10 seconds
alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 10*1000, pintent);
其中SimpleService
是Service
包含在其onStartCommand
Context context = getApplicationContext();
ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
// get the info from the currently running task
List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1);
String curAct = taskInfo.get(0).topActivity.getPackageName();
Toast.makeText(context, curAct, Toast.LENGTH_LONG).show();
但是下面的代碼,當我嘗試把我的可愛的10秒亞軍在onClick
函數之間,這一行給我一個錯誤getService
:
PendingIntent pintent = PendingIntent.getService(this, 0, i, 0);
說The method getService(Context, int, Intent, int) in the type PendingIntent is not applicable to the arguments (new View.OnClickListener(){}, int, Intent, int)
。
我得到同樣的事情,如果我嘗試把ActivityManager
在Runnable
S和其他方法,但如果功能在ClickListener
(總是相同的錯誤),他們從來沒有工作。
我該怎麼辦?在用戶點擊開始後,我怎樣才能讓Toast
s每10秒顯示當前的前臺活動,並在用戶單擊停止後停止?
謝謝
是的,謝謝!完美的作品! – SaiyanGirl
太棒了!原因在於對新的View.OnClickListener的引用超出了範圍,所以您需要將其作爲該類的私有成員記住 – gile