gpt4 book ai didi

java - Android内存泄漏将匿名类实现与特定于线程的局部变量一起使用

转载 作者:行者123 更新时间:2023-12-03 13:09:24 25 4
gpt4 key购买 nike

在我的应用程序中,我想在一个单独的线程中执行特定任务。我想知道它将导致任何内存泄漏的位置。

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
runOnThread();
}

private void runOnThread() {
new Thread() {
private int value;
@Override
public void run() {
while (true) {
SystemClock.sleep(1000);
callotherfunction(value);
}
}
}.start();
}
}

那么这种实现是否会导致内存泄漏呢?更重要的是,在线程中包含局部变量是否有害?线程中的局部变量会导致内存泄漏。

最佳答案

我不知道您的代码中的问题是什么,但是如果您需要在其他线程/后台执行操作,我邀请您使用 AsynTask

Doc:https://developer.android.com/reference/android/os/AsyncTask.html

还打开一个对话框的示例,该对话框在操作结束时关闭:

在您的类(class)中,必须在后台进行操作:

/** Create variable */
private Dialog dialog;
private LoadAsyn loadAsync;

/** Call the AsyncTask */
dialog = ProgressDialog.show(getActivity(), "", "Caricamento...", false, true);
dialog.setCancelable(false);
loadAsync = new LoadAsyn();
loadAsync.execute((Void) null);

这是在其中定义AsynTask操作的类:
/** Define AsyncTask Class */
public class LoadAsyn extends AsyncTask<Void, Void, Boolean> {
@Override
protected void onPreExecute(){}

@Override
protected void onProgressUpdate(Void[] values) {};

@Override
protected Boolean doInBackground(Void... params) {

//In this block all operation to do in background

return true;

}

@Override
protected void onPostExecute(final Boolean success) {
dialog.dismiss();
//Operation to do after execution
}

@Override
protected void onCancelled() {
loadCompAsync = null;
}
}
}

关于java - Android内存泄漏将匿名类实现与特定于线程的局部变量一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40287840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com