每当我尝试按下后退按钮或应用程序是后台或任何实例时,我使用位置来更新经度和纬度,我希望停止运行location_thread。当我切换到当前活动时恢复它。
Data MyCSV;
Infile "C:\MyName\ImportData.CSV"
Delimiter="," LRecL=1000 DSD Missover Firstobs=2; * Firstobs=2 to delete col-names;
Informat qty_txt $9. ; * 9 .. length in characters;
If qty_txt ^= "NA" Then qty=Input(qty_txt,Best15.); Drop qty_txt;
Run;
答案 0 :(得分:0)
请勿使用Thread.stop()
方法deprecated and unsafe
停止线程的最佳方法是完成它的工作
创建易变变量,如
public volatile boolean threadIsStopped;
替换
while (!isInterrupted())
到
while (!threadIsStopped)
然后让它成真
public void onBackPressed() {
super.onBackPressed();
threadIsStopped = true;
Intent intent = new Intent(Logistic_ReportProblem.this, FPAgentHome.class);
startActivity(intent);
finish();
}
由于你的背压开始了另一项活动并完成了当前的事情,所以做得更好:
@Override
protected void onResume() {
super.onResume();
threadIsStopped = false;
//start thread here
}
@Override
protected void onPause() {
super.onResume();
threadIsStopped = true;
}
所以有s no need to stop thread in
onBackPressed`。
请注意,在线程停止之前设置threadIsStopped
后可能会出现延迟。
关于恢复线程 - 在您的情况下,您只需创建新线程并启动它。
另请注意,如果您更改设备的方向,则会再次调用onPause
和onResume
。这就是为什么强烈建议使用IntentService
来做这些事情。