gpt4 book ai didi

java - GcmTaskService 不工作

转载 作者:行者123 更新时间:2023-12-02 03:18:17 25 4
gpt4 key购买 nike

我想将项目中的 BroadcastReceiver 替换为 GcmNetworkManager。所以我读了一些教程并这样做:
1)在 list 中我添加:

<service android:name=".WakeOnLanService"
android:permission="com.google.android.gms.permission.BIND_NETWORK_TASK_SERVICE"
android:exported="true">
<intent-filter>
<action android:name="com.google.android.gms.gcm.ACTION_TASK_READY"/>
</intent-filter>
</service>

2)服务:

public class WakeOnLanService extends GcmTaskService {

@Override
public int onRunTask(TaskParams taskParams) {
return GcmNetworkManager.RESULT_SUCCESS;
}

@Override
public int onStartCommand(Intent intent, int i, int i1) {
Toast.makeText(this,"Выполнилось",Toast.LENGTH_SHORT).show();
return super.onStartCommand(intent, i, i1);
}
}

3) Activity 安排:

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
GcmNetworkManager mGcmNetworkManager = GcmNetworkManager.getInstance(this);
Task task = new OneoffTask.Builder()
.setService(WakeOnLanService.class)
.setExecutionWindow(0, 2)
.setTag("MyTag")
.setUpdateCurrent(true)
.setRequiredNetwork(Task.NETWORK_STATE_CONNECTED)
.setRequiresCharging(false)
.build();
mGcmNetworkManager.schedule(task);
}
}

但这不起作用,Toast 未显示。如何正确执行此操作以及在互联网连接上使用 GcmNetworkManager 运行服务的最佳实践是什么(就像在广播接收器中一样)?

最佳答案

您不应在 onStartCommand 中运行代码。

相反,请使用onRunTask

@Override
public int onRunTask(TaskParams taskParams) {
Toast.makeText(this,"Выполнилось",Toast.LENGTH_SHORT).show();
return GcmNetworkManager.RESULT_SUCCESS;
}

来自documentation :

When the scheduler starts your service, a new thread is created and the system invokes onRunTask(). Implement the logic for your tasks by overriding onRunTask();

至于建立互联网连接时运行任务。最好不要这样做,除非你确实需要这样做。这就是这个任务的重点。安排您的任务与其他任务一起工作。如果您确实需要在建立互联网连接时触发它,则需要使用 BroadcastReceiver 并手动运行代码。您不能在任意时间触发此任务。

关于java - GcmTaskService 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39998368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com