Debugging Android开发:在onClick中编写for循环

Debugging Android开发:在onClick中编写for循环,debugging,service,android-intent,onclick,Debugging,Service,Android Intent,Onclick,我试图让一个应用程序在用户按下指定按钮后运行5次,但它只运行一次,并打印出我的调试语句(Log.v)5次 执行此操作的正确格式是什么 这就是我所尝试的: Button btnStart = (Button) findViewById(R.id.StartService); btnStart.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { for (int i = 0; i <

我试图让一个应用程序在用户按下指定按钮后运行5次,但它只运行一次,并打印出我的调试语句(Log.v)5次

执行此操作的正确格式是什么

这就是我所尝试的:

Button btnStart = (Button) findViewById(R.id.StartService);
btnStart.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)

{   

for (int i = 0; i < 5; i++)
{
Intent intent = new Intent(currentClass.this, different.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

startService(intent);
finish();
Log.v(TAG, "testing");
}
}
});
按钮btnStart=(按钮)findViewById(R.id.StartService);
btnStart.setOnClickListener(新视图.OnClickListener()
{
公共void onClick(视图v)
{   
对于(int i=0;i<5;i++)
{
意向意向=新意向(currentClass.this,different.class);
intent.addFlags(intent.FLAG\u活动\u新任务);
startService(意向);
完成();
Log.v(标签“测试”);
}
}
});
编辑:


我尝试让服务执行我的任务五次,但第一次之后,我得到了一个java.io.IOException:无效的预览图面。调用mMediaRecorder.prepare()时,会再次调用startRecording()。

当您的
for()
循环运行五次时,您的服务还没有机会完成。您需要实现UI和服务之间的通信——让服务在通信完成后向您发送消息,以便您可以再次调用它(阅读服务活动通信)


或者,将服务修改为执行任何操作五次。如果每次运行服务时您的数据都是动态的,那么您可能必须使用第一种方法。

Oleg,感谢您的回复。我尝试让服务执行我的任务五次,但在第一次之后,当我尝试“mServiceCamera.reconnect();”时,它抛出一个空指针异常。我是否应该向onStart命令添加任何内容(例如if intent!=null)?我试过了,但还是有例外@重写公共int-onStartCommand(Intent-Intent,int-flags,int-startId){super.onStartCommand(Intent,flags,startId);如果(mRecordingStatus==false)startRecording();返回START\u STICKY;}我将重新编辑此问题。谢谢你抽出时间,没问题。我对安卓系统还比较陌生,但我会尽力帮助你。无论如何,如果用户太频繁地退出相机,那么
Camera.open()
可能会抛出
RuntimeException
s,因此可能
try
catch
异常。此外,我认为在使用完相机资源后,您可能需要释放它们。请尝试
mServiceCamera.release()
,看看这是否有助于解决您的问题。谢谢您的帮助!这可能是一个无趣的问题,但我只是好奇。如果应用程序在预设的时间内运行,而不是实现服务活动通信,那么在每次调用应用程序运行后,如果我只是使用handler.postDelay()呢。这和在for循环完成之前给它一个完成的机会是一样的吗?非常感谢!可以,但我担心的是,如果用户退出您的主要应用程序活动,处理程序将被杀死和/或丢失。你可能知道Android会破坏你的应用程序,比如屏幕定向,或者如果手机需要内存(比如,用户必须接听电话)。当这种情况发生时,处理程序可能会失去对其
上下文的访问权(或者更糟的是,泄漏它)。您是否可以在您的服务中以某种方式进行延迟,并运行您需要的任何功能?实际上,更好的方法是使用
AlarmManager
-它就像cron,您可以告诉系统在一定时间内自动唤醒您的应用程序或服务。让我得到一个链接到一个好的参考。。。