pra*_*een 21 multithreading android
我正在尝试在android中开发一个应用程序,它包含一个服务来读取传感器值多个小时.当我启动服务时,我的设备会挂起,所有其他进程都会变慢.为了解决这个问题,我尝试在单独的线程中启动服务,如下所示,但问题仍然存在.
new Thread(new Runnable() {
@Override
public void run() {
Intent intent=new Intent(getApplicationContext(), SensorService.class);
startService(intent);
}
}).start();
Run Code Online (Sandbox Code Playgroud)
此线程仅在不同的线程中启动服务,但服务在主线程中运行.Plz有人帮我如何在单独的线程中运行服务?
您所做的就是启动新活动,因此如果您运行监视器的逻辑位于 中SensorService,那么它仍然会在主线程上。您需要将监视逻辑放入新线程中,而不仅仅是用它启动活动。
如果您尝试在后台线程上运行服务,则需要使用performOnBackgrounThread像此代码这样的静态方法,可以在 Android 文档 (android-8\SampleSyncAdapter\src\com\example\android\samplesync\client\NetworkUtilities .java):
public static Thread performOnBackgroundThread(final Runnable runnable) {
final Thread t = new Thread() {
@Override
public void run() {
try {
runnable.run();
} finally {
}
}
};
t.start();
return t;
}
Run Code Online (Sandbox Code Playgroud)
同样重要的是要记住,您永远不想在主 UI 线程上执行网络操作。不是你这里的,仅供参考......
| 归档时间: |
|
| 查看次数: |
17023 次 |
| 最近记录: |