我知道这是一个基本问题,我是 android 服务的新手。我对 Google 和 StackOverflow 进行了研究。stackoverflow 中有很多与我的主题相关或相似的问题,但我无法得到正确的答案,我被转移到不同的主题。
这是我正在运行的简单测试代码。
public class Service extends android.app.Service {
private Handler mHandler;
private void ping() {
try {
Log.e("Tag", "Success");
Toast.makeText(getApplicationContext(), "Service Ping", Toast.LENGTH_SHORT).show();
} catch (Exception e) {
Log.e("Error", "In onStartCommand");
e.printStackTrace();
}
scheduleNext();
}
private void scheduleNext() {
mHandler.postDelayed(new Runnable() {
public void run() { ping(); }
}, 3000);
}
public int onStartCommand(Intent intent, int x, int y) {
mHandler = new android.os.Handler();
ping();
return START_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
在此弹出 Toast 消息并每 3 秒打印一次 Log 消息,即使在应用程序最小化时它也能正常工作。但是当我完全退出应用程序时,没有 Toast 或 Log 打印。在这个SO ANSWER中清楚地说明了为什么在没有 UI 的情况下无法调用 Toast 消息。而且由于进程被杀死,我无法打印 LOG。
基本上,我希望该服务每 5 分钟在后台运行一次,并且需要从在线获取数据。我应该如何实施服务?并且感谢任何示例代码或教程?