gpt4 book ai didi

android - fragment 交易时卡住UI

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:04:16 25 4
gpt4 key购买 nike

我在使用 FragmentManager 替换 fragment 时遇到问题。我的问题是卡住用户界面。我正在尝试寻找一些好的做法和/或库来处理我的问题。

我的部分代码:

主要 Activity 布局:

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/my_drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<FrameLayout
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="match_parent" />

</android.support.v4.widget.DrawerLayout>

主要 Activity 类

public class MyActivity extends Activity 

用方法

  public void nextFragment(Fragment fragment, int position) {
fragment.setArguments(new Bundle());
FragmentManager fragmentManager = getFragmentManager();
fragmentManager
.beginTransaction()
.replace(R.id.content, fragment).commit();

}

我的每一个 fragment 都是这样

import android.app.Fragment;

public class SomeFragment extends Fragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
RelativeLayout rootView = (RelativeLayout) inflater.inflate(
R.layout.fragment_layout, container, false);
//many long time data downloading & creating view
}

private void nextFragment() {

((MyActivity) getActivity()).nextFragment(
new SomeNextFragment(), 0);

}
}

现在由于在每个 fragment 上下载数据开始我的 UI 是卡住的。在此先感谢您的帮助。

最佳答案

通常,您不应在 UI 线程上执行长时间运行/阻塞操作。使用工作线程或 AsyncTask .

一般来说,我建议您在 onCreateView 中创建任何您可以创建的内容,然后在后台操作完成后设置值。例如,马上创建一个TextView,然后当你从后台操作得到结果时,再在已经存在的TextView中设置文本。

使用线程:

final Handler handler = new Handler();
new Thread(new Runnable(){
@Override
public void run(){
//long running code
//this is running on a background thread
final String someText = //result of long running code
handler.post(new Runnable(){
@Override
public void run(){
//since the handler was created on the UI thread,
// this code will run on the UI thread
someTextView.setText(someText);
}
});
}
}).start();

您还可以使用 getActivity().runOnUiThread(new Runnable(){...}); 而不是使用 Handler

关于android - fragment 交易时卡住UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24868803/

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