Java Android:用户点击按钮后,每10秒获取当前前台活动
我已经阅读了Android文档(这里是Android新手),但通常有很多关于如何获得当前前台活动(如and)以及如何让命令每X分钟/秒运行一次(如and)的文章和问题,但我似乎无法在点击按钮之间将这两个结合起来 此任务的目的是,一旦用户单击开始按钮,当前活动将每隔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
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);