【发布时间】:2015-05-13 19:01:44
【问题描述】:
我的应用程序运行良好,但我不知道为什么我的 void run();当我点击“主页”按钮时,仍然在后台运行。
我希望我的线程暂停线程 onPause 并在我调用 onResume() 时再次启动线程!
不知道我做错了什么!
我的代码:
public class MainActivity extends ActionBarActivity {
Thread thread;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
thread = new Thread(new MyThread());
thread.start();
}
@Override
protected void onPause() {
super.onPause();
this.thread.interrupt();
Log.d("Method:","OnPause();");
}
@Override
protected void onResume(){
super.onResume();
this.thread.run();
Log.d("Method:","onResume();");
}
@Override
protected void onDestroy(){
super.onDestroy();
this.thread.interrupt();
finish();
Log.d("Method:","onDestroy();");
}
}
内部类:
public class MyThread implements Runnable{
@Override
public void run() {
while(!Thread.currentThread().isInterrupted()){
if(Thread.currentThread().isInterrupted()){
break;
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Log.d("Method","void run()");
//Creates a file with SharedPreferences and make editable
SharedPreferences preferences = getSharedPreferences("MyPrime", Context.MODE_PRIVATE);
final SharedPreferences.Editor editor = preferences.edit();
Random random = new Random();
BigInteger bigInteger = new BigInteger(10,random);
//Loads and gets the last int value store in the file
SharedPreferences preferences1 = getSharedPreferences("MyPrime",Context.MODE_PRIVATE);
final int numberInFile = preferences1.getInt("MyPrime",0);
if(bigInteger.isProbablePrime(random.nextInt(500))){
if(numberInFile < bigInteger.intValue()){
editor.putInt("MyPrime",bigInteger.intValue());
editor.commit();
}
}
}
}
}
【问题讨论】:
标签: java android runnable onresume onpause