Android:通过关闭活动停止服务
我根据本教程创建了一个覆盖视图: 这是我的服务课:Android:通过关闭活动停止服务,android,Android,我根据本教程创建了一个覆盖视图: 这是我的服务课: public class CustomService extends Service{ private WindowManager mWindowsManger; private ImageView mFloatingImage; private WindowManager.LayoutParams mParams; @Override public IBinder onBind(Intent i
public class CustomService extends Service{
private WindowManager mWindowsManger;
private ImageView mFloatingImage;
private WindowManager.LayoutParams mParams;
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
mWindowsManger = (WindowManager) getSystemService(WINDOW_SERVICE);
mFloatingImage= new ImageView(this);
mFloatingImage.setImageResource(R.mipmap.ic_launcher);
mFloatingImage.setAlpha(0.5f);
mParams = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT);
mParams.gravity = Gravity.TOP | Gravity.LEFT;
mParams.x = 0;
mParams.y = 100;
mWindowsManger.addView(mFloatingImage, mParams);
mFloatingImage.setOnTouchListener(new CustomTouchListener(this));
}
@Override
public void onDestroy() {
super.onDestroy();
if (mFloatingImage!= null) mWindowsManger.removeView(mFloatingImage);
}
}
这是我的活动,CustomService
从这里开始
public class MainActivity extends ActionBarActivity {
@Override
protected void onStart() {
super.onStart();
startService(new Intent(this, CustomService.class););
}
...
}
现在我的问题是,每当我关闭活动时,我的服务就会停止并消失,或者调用CustomService
的onCreate
方法并重新创建它
有什么想法吗?您必须覆盖
onStartCommand
并在您的服务中返回START\u STICKY
比如:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// some code
return START_STICKY;
}
还要确保在清单中声明您的服务:
<service android:name = ".YourServiceClass"></service>
另外,将工作代码从onCreate移动到onStart命令,并查看是否有任何更改
还要确保您在服务中没有做非常繁重的工作,因为如果手机/仿真器内存/cpu不足,操作系统将破坏使用过多资源的服务
另一件事是在应用程序
级别启动服务,即扩展应用程序
类,并将全局内容放在其中我找到了答案
我应该在前台运行服务:同样的问题出现了。我的
服务
stopped@Saeed我已经添加了一些提示,也许它们有帮助,谢谢,但问题出现了again@Saeed告诉我你是怎么注意到服务站的?将一些日志记录放在服务的活动和onDestroy之上,以了解服务何时停止。尝试使用不同的设备/仿真器,看看它是否是相同的onStop
或onDestroy
。正如您从我的代码中看到的,mFloatingImage应该显示在窗口上,所以有时它会重新创建服务(转到onStartCommand
和onCreate
),有时Windows上没有图像视图(我做了一些日志记录,但在这种情况下,logcat中没有任何内容)我想我的服务停止了(我在不同的设备上测试过,同样的问题发生了)。最后我找到了一个更好的方法:但我不知道为什么会发生这个问题