当前位置: 首页 > 知识库问答 >
问题:

onStartCommand在服务Android中只调用一次?

卫诚
2023-03-14
import android.app.IntentService;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.net.wifi.WifiManager;
import android.os.Handler;
import android.os.IBinder;
import android.os.Looper;
import android.support.annotation.Nullable;
import android.util.Log;
import android.widget.Toast;




/**
 * An {@link IntentService} subclass for handling asynchronous task requests in
 * a service on a separate handler thread.
 * <p>
 * TODO: Customize class - update intent actions and extra parameters.
 */
public class WiFiCheck extends Service {




    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        // Let it continue running until it is stopped.


        Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show();


        return super.onStartCommand(intent, flags, startId);

    }

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }



    /**
     * Handle action Foo in the provided background thread with the provided
     * parameters.
     */
    private void handleActionFoo(String param1, String param2) {
        // TODO: Handle action Foo
        throw new UnsupportedOperationException("Not yet implemented");
    }

    /**
     * Handle action Baz in the provided background thread with the provided
     * parameters.
     */
    private void handleActionBaz(String param1, String param2) {
        // TODO: Handle action Baz
        throw new UnsupportedOperationException("Not yet implemented");
    }
}
return START_STICKY;
        startService(new Intent(this, WiFiCheck.class));

但还是没用。有什么帮助吗

共有1个答案

喻高寒
2023-03-14

如果您再次启动服务,吐司将被调用两次或更多次

例如。

startService(new Intent(this, WiFiCheck.class));
startService(new Intent(this, WiFiCheck.class));

new intent是位于onstartCommand(intent intent中的一个intent

 类似资料:
  • 通常,当我创建一个Android服务时,我会实现方法,但在我的上一个项目中,这不起作用。我尝试实现,这似乎起作用了。 问题是:当我必须实现一个服务时,需要哪种方法?我必须实现哪些方法?、还是两者兼而有之?每一个角色是什么?

  • 我正在编写一个记录服务,它可以适当地获取意图和功能中的附加数据。我使用START\u REDELIVER\u INTENT,以便在每个START命令上使用与原始意图相同的设置开始录制,但我必须知道当前调用onStartCommand是由于显式startService还是进程崩溃。 因此,我的问题是如何区分启动服务请求导致的onStartCommand调用和服务崩溃\关闭后系统在没有显式停止自己\停

  • 我正在使用AlarmManager,如下所示,它在Android O及以下版本中运行良好。 但在Android P中,我在Logcat中得到以下错误: 不允许后台启动:服务意图{flg=0x4 cmp=com.app.appname/.PeriodicChecksService(具有额外功能)}到com。应用程序。记录器/。来自pid的PeriodicChecksService=-1 uid=10

  • 我使用CXF、REST服务和Apache Camel实现了以下API。 http://localhost:9090/api/compute http://localhost:9091/api/listaction null IllegalArgumentException:无效的URI:/API/ListAction/API/ListAction。如果您正在转发/桥接httpendpoint,则在

  • 在异步HTTP SERVER中使用服务 全局方法service_center() 使用service_center($service)获取服务地址,然后使用call()方法调用公开的服务方法 $service = (yield service_center('User')); $user = (yield $service->call("User::getUser", ['id'

  • 问题3:如果我使用@Schedured(initaildelay=10000,fixedrate=20000)而不是@PostConstruct注释,它将解决第一个问题,但是它将每20秒执行一次我的作业。 有线索吗?