Ang*_*274 5 android android-service
我正在创建一个应用程序,即使应用程序没有运行,也需要每分钟更新一次值.
当然,我已经设置了一个简单的Service方法.我设置了调试消息,告诉我何时Service启动,何时更新(每分钟)以及何时关闭.我还有一条消息告诉我何时在runOnUiThread()方法内更新值.我的所有消息都被激活,除了那个消息runOnUiThread().有什么我做错了(当然有)?我需要改变什么?
码:
@Override
public void handleMessage(Message message) {
try {
if (!serviceStarted) {
serviceStarted = true;
serviceTest = true;
while (serviceStarted) {
new MainActivity().runOnUiThread(new Runnable() {
public void run() {
OverviewFragment.refresh(getApplicationContext());
System.out.println("yay");
}
});
Thread.sleep(((1 /* minutes */) * 60 * 1000));
System.out.println("Updated values through service.");
}
}
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
e.printStackTrace();
}
stopSelf(message.arg1);
}
Run Code Online (Sandbox Code Playgroud)
小智 11
所以没有必要这样做,除非你在里面创建一个Thread
Gabe Sechan的回答是正确的.
但是,如果您使用单独的线程,而不是遵循代码:
new MainActivity().runOnUiThread(new Runnable() {
public void run() {
OverviewFragment.refresh(getApplicationContext());
System.out.println("yay");
}
});
Run Code Online (Sandbox Code Playgroud)
试试,这段代码:
new Handler(Looper.getMainLooper()).post(new Runnable() {
public void run() {
OverviewFragment.refresh(getApplicationContext());
System.out.println("yay");
}
});
Run Code Online (Sandbox Code Playgroud)
警告:服务在其托管进程的主线程中运行 - 该服务不会创建自己的线程,也不会在单独的进程中运行(除非您另行指定).
| 归档时间: |
|
| 查看次数: |
7611 次 |
| 最近记录: |