其他分享
首页 > 其他分享> > Android:从Intent服务启动服务

Android:从Intent服务启动服务

作者:互联网

我已经在我的应用程序中运行了位置识别API的活动识别意图服务.我想在用户活动更改时启动一项服务.但我似乎无法使其正常工作.这是我尝试过的:

在活动识别意图服务的意图服务类中:(编辑:将日志添加到if条件.)

 @Override
 protected void onHandleIntent(Intent intent) 
 {
        // Get the update
        ActivityRecognitionResult result = ActivityRecognitionResult.extractResult(intent);

        // Get the most probable activity from the list of activities in the update
        DetectedActivity mostProbableActivity = result.getMostProbableActivity();

        // Get the type of activity
        int currentActivity = mostProbableActivity.getType();      

        if(currentActivity == DetectedActivity.IN_VEHICLE)
        {
            Log.w("Rakshak", "in the if condition"); <-- this gets posted.
            sendNotification(); // this just send a notification that the service has started. 
            Intent i = new Intent(this, MyService.class);
            intent.setAction("start");
            startService(i);   <-- this dose'nt start the service. 

        }
}

在清单中:

 <uses-permission android:name="com.google.android.gms.permission.ACTIVITY_RECOGNITION" />

 <application
     ....

     <service android:name="driver.rakshak.drivetrackeradmin.MyService"/>    

    <service android:name="driver.rakshak.drivetrackeradmin.ActivityRecognitionIntentService"/>  
 </application>

我有一个按钮,用户可以单击该按钮以手动启动该服务,并且工作正常.只有在我希望该服务自动启动时,它才起作用.

该应用程序不会崩溃,因此从发布的日志中没有任何错误.

让我知道是否需要查看更多代码.

干杯.

解决方法:

由于在onHandleIntent返回之后IntentService的Context被销毁,因此由

Intent i = new Intent(this, MyService.class);

不再有效.

尝试通过getApplicationContext()创建您的Intent

Intent i = new Intent(getApplicationContext(), MyService.class);

这可能会解决此问题.

标签:intentservice,android,service
来源: https://codeday.me/bug/20191121/2052650.html