用于多个作业的java单Android线程
我希望有一个通过HTTP请求加载或保存数据的应用程序,但是数据必须与UI线程交互。理想情况下,我希望单个线程在消息上使用IF语句来确定请求是“加载”还是“保存”
用最少的代码量做这件事最简单的方法是什么强>
另外,处理程序实例是否在单个线程上运行
编辑:这是我现在使用的代码:
Handler doStuff = new Handler(){
@Override
public void handleMessage(Message msg){
if(msg.what == 1){
// Load all the information.
// Get the ID from sharedPrefs
SharedPreferences details= getSharedPreferences("details", 0);
String ID = patDetails.getString("id", "error");
// Load up the ID from HTTP
String patInfo = httpInc.getURLContent("info.php?no="+AES.encrypt("387gk3hjbo8sgslksjho87s", ID));
// Separate all the details
patientInfo = patInfo.split("~");
}
if(msg.what == 2){
// Save the data
}
}
};
Eclipse停止调试并显示StrictMode的“未找到源”。阶级
我想这是因为它使用主线程访问internet,尽管它是在单个线程中运行的
任何想法
# 1 楼答案
Handlers不在单个线程上运行。检查那个链接。您还应该签出AsyncTask
# 2 楼答案
我建议将作业作为} :
Runnable
提交给单线程^{这样,UI线程将不会阻塞,而您可以轻松地为不同的操作提交不同的
Runnable
,并且ExecutorService
将完全负责保持它的异步编辑:如果需要与UI交互,请在变为异步之前进行,并将结果保留在最终变量中