Android:用户点击按钮后,每10秒获取一次当前前台活动

时间:2014-01-07 11:21:38

标签: java android android-intent

我已经阅读了Android文档(这里是Android新手),但通常有很多关于如何获取当前前台活动的文章和问题(例如herehere和{{ 3}})以及如何每X分钟/秒运行命令(例如herehereherehere),但我似乎无法设法将两个组合在按钮点击之间

此任务的目的是,一旦用户单击开始按钮,当前活动将每隔10秒通过Toast显示在屏幕上。用户点击停止后,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)

如果我尝试将ActivityManager放在Runnable s和其他方法中,我会得到同样的东西,但如果函数在ClickListener中,它们永远不会工作(总是相同的错误) 。

我该怎么办?在用户点击开始后,如何使用当前前台活动每10秒显示Toast,并在用户点击停止后停止?

谢谢

1 个答案:

答案 0 :(得分:1)

而不是在

中使用它
PendingIntent.getService(this, 0, i, 0);

为上下文创建活动的私有成员,如下所示:

private Context myContext;
onCreate中的

用:

实例化它
myContext= getApplicationContext();

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

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