相关疑难解决方法(0)

调用stopService方法时,服务不会停止

我目前有一个运行正常的服务,但是当我尝试使用stopService方法停止它时,它的onDestroy方法不会被调用.

这是我用来尝试停止服务的代码

stop_Scan_Button =(Button)findViewById(R.id.stopScanButton);

stop_Scan_Button.setOnClickListener(new View.OnClickListener(){
    public void onClick(View v){
        Log.d("DEBUGSERVICE", "Stop Button pressed");
        Intent service = new Intent(CiceroEngine. CICERO_SERVICE);
        releaseBind();
        Log.d("Stop_Scan_Button", "Service: " + service.toString());
        stopService(service);
        Log.d("Stop_Scan_Button", "Service should stop! ");

        }   
});
Run Code Online (Sandbox Code Playgroud)

我是否正确地认为当使用stopService时它会调用服务的onDestroy方法?当我按下停止扫描按钮时onDestroy(),我的服务中的方法不会被调用.

还有什么我错过了我应该停止服务吗?

编辑:添加onServiceConnected()在运行stopService时调用的调用onServiceDisconnected(),为什么会发生这种情况?

编辑:添加更多信息关于绑定

我在onCreate()方法中调用bindService,然后让releaseBind()方法取消绑定服务.

以下是该方法的代码:

 public void releaseBind(){
    unbindService(this);
  }
Run Code Online (Sandbox Code Playgroud)

所以我认为解除绑定不是我的问题?

service android

25
推荐指数
2
解决办法
7万
查看次数

Android:如何确定IntentService是否正在运行?

我有一个上传活动,我称之为Intent服务.在那里我正在处理API请求调用.

我希望活动知道服务是否正在运行,以显示上传标签.

我尝试了以下来确定服务是否正在运行:

public void startUploadServiceTask() {
    if (Util.isNetworkAvailable(mContext)) {

        if (!isMyServiceRunning(UploadDriveService.class)) {

                startService(new Intent(mContext,
                        UploadService.class));

            }
        } else {
            Toast.makeText(mContext,
                    "Service is already running.", Toast.LENGTH_SHORT)
                    .show();
        }
    } else {
        Toast.makeText(mContext,
                getString(R.string.please_check_internet_connection),
                Toast.LENGTH_SHORT).show();
    }
}



private boolean isMyServiceRunning(Class<?> serviceClass) {
    ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
    for (RunningServiceInfo service : manager
            .getRunningServices(Integer.MAX_VALUE)) {
        Log.e("ALL SERVICE", service.service.getClassName().toString());
        if (serviceClass.getName().equals(service.service.getClassName())) {

            return true;
        }
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

但是在Activity Manager Running Service Info中,我没有得到我正在运行的意向服务类,所以这总是假的.

我已经使用Broadcast for API调用响应.

我甚至检查了这段代码.

if(startService(someIntent) != null) { 
 Toast.makeText(getBaseContext(), …
Run Code Online (Sandbox Code Playgroud)

service android android-intent activity-manager android-intentservice

6
推荐指数
2
解决办法
9839
查看次数

我有什么选项来检查IntentService是否已在运行?

我有一个每15分钟唤醒一次的AlarmService并触发一个IntentService.但是,我想确保如果以前启动的IS已经在运行,那么AlarmService不会尝试启动另一个(IS正在处理文件,如果第二个版本尝试了,则会出现奇怪的竞争条件对相同的文件采取行动).

轮询系统以查看我的IS实例是否已在运行并跳过AlarmService cron的当前迭代的最佳方法是什么?

android alarmmanager android-intent

1
推荐指数
1
解决办法
1912
查看次数