我已经阅读了Android文档(这里是Android新手),但通常有很多关于如何获取当前前台活动的文章和问题(例如here,here和{{ 3}})以及如何每X分钟/秒运行命令(例如here,here,here和here),但我似乎无法设法将两个组合在按钮点击之间。
此任务的目的是,一旦用户单击开始按钮,当前活动将每隔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);
其中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
中,它们永远不会工作(总是相同的错误) 。
我该怎么办?在用户点击开始后,如何使用当前前台活动每10秒显示Toast
,并在用户点击停止后停止?
谢谢
答案 0 :(得分:1)
而不是在
中使用它PendingIntent.getService(this, 0, i, 0);
为上下文创建活动的私有成员,如下所示:
private Context myContext;
onCreate中的用:
实例化它myContext= getApplicationContext();
然后在getService中使用此上下文:
PendingIntent.getService(myContext, 0, i, 0);