2014-01-07 52 views
1

我已閱讀Android文檔(Android新手在這裏),但通常會有大量關於如何獲取當前前景活動的文章和問題(例如,herehere,並here)以及如何運行每隔X分鐘/秒(例如herehereherehere)的命令,但我似乎無法管理兩個之間按鈕點擊結合起來。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); 

其中SimpleServiceService包含在其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)

我得到同樣的事情,如果我嘗試把ActivityManagerRunnable S和其他方法,但如果功能在ClickListener(總是相同的錯誤),他們從來沒有工作。

我該怎麼辦?在用戶點擊開始後,我怎樣才能讓Toasts每10秒顯示當前的前臺活動,並在用戶單擊停止後停止?

謝謝

回答

1

如果不使用這種在

PendingIntent.getService(this, 0, i, 0); 

創建活動的私有成員的背景是這樣的:

private Context myContext; 
中的onCreate

與它實例

myContext= getApplicationContext(); 

然後在getService中使用此上下文:

PendingIntent.getService(myContext, 0, i, 0); 
+0

是的,謝謝!完美的作品! – SaiyanGirl

+1

太棒了!原因在於對新的View.OnClickListener的引用超出了範圍,所以您需要將其作爲該類的私有成員記住 – gile

相關問題