Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android:用户点击按钮后,每10秒获取当前前台活动_Java_Android_Android Intent - Fatal编程技术网

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

Java Android:用户点击按钮后,每10秒获取当前前台活动,java,android,android-intent,Java,Android,Android Intent,我已经阅读了Android文档(这里是Android新手),但通常有很多关于如何获得当前前台活动(如and)以及如何让命令每X分钟/秒运行一次(如and)的文章和问题,但我似乎无法在点击按钮之间将这两个结合起来 此任务的目的是,一旦用户单击开始按钮,当前活动将每隔10秒通过Toast显示在屏幕上。一旦用户单击停止,就会停止弹出Toasts 我使用以下代码每10秒显示一次当前活动: Calendar cal = Calendar.getInstance(); Intent i = new Inte

我已经阅读了Android文档(这里是Android新手),但通常有很多关于如何获得当前前台活动(如and)以及如何让命令每X分钟/秒运行一次(如and)的文章和问题,但我似乎无法在点击按钮之间将这两个结合起来

此任务的目的是,一旦用户单击开始按钮,当前活动将每隔10秒通过
Toast
显示在屏幕上。一旦用户单击停止,就会停止弹出
Toast
s

我使用以下代码每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
是一个
服务
,在其
onstart命令中包含以下代码

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(); 
PendingContent类型中的getService(Context,int,Intent,int)方法不适用于参数(new View.OnClickListener(){},int,Intent,int)

如果我尝试将
ActivityManager
放入
Runnable
s和其他方法中,我也会得到同样的结果,但是如果函数位于
ClickListener
中,它们就不会起作用(总是相同的错误)

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


谢谢你

不用这个

PendingIntent.getService(this, 0, i, 0);
为上下文创建活动的私有成员,如下所示:

private Context myContext;
在onCreate中,使用以下命令实例化它:

myContext= getApplicationContext();
然后在getService中使用此上下文:

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

伟大的原因是对它的引用超出了new View.OnClickListener的范围,因此您需要将其作为类的私有成员记住
PendingIntent.getService(myContext, 0, i, 0);