某些情况下Fragment是否会fragment 重复创建建

JET转换会将文本生成的重复过程实现自动化。
JET transformations automate the repetitive process of text generation.
无论你选择哪种方法,质量保证是一个重复过程,甚至很小的变化就会有切实的不同。
No matter which approach you choose, quality assurance is an iterative process in which even small changes can make a tangible difference.
有这样一个可重复过程来证明移动到云计算的价值和风险非常重要;否则很容易做出错误的决策。
It is important to have a repeatable process to qualify the value and the risk of moving to the cloud; otherwise the wrong decision can be easily made.
我非常喜欢构建可重复过程。
I am a tremendous fan of building a repeatable process.
进一步,将这一稳定化控制器的设计方法推广到一类具有范数有界时变参数不确定性的线性离散时滞重复过程。
Furthermore, the result of the stabilizing controller is extended to a class of linear discrete state delay repetitive processes with norm-bounded time-varying parameter uncertainty.
本文针对线性离散时滞重复过程研究稳定化控制器的设计问题。
This paper addresses the problem of designing a feedback controller stabilizing discrete linear repetitive processes with time-delay.
月22 日:用来辨识面向云计算的服务的可重复过程
September 22: Proposed repeatable process to identify services for the cloud
我重复过程,一遍一遍。
I repeat processes again and again.
但一旦投入使用,像心脏切除术这类的手术,将不需要太多的重复过程,从而减少入院次数,降低治疗成本。
But if these go to plan, fewer procedures like cardiac ablation will need to be repeated, lowering the number of readmissions, and with it cost of treatment.
其中,迭代学习控制器以前馈形式作用于重复过程。
The iterative learning controller acts on repetitive process as feed-forward.
据认为,在疲劳中,有一个使材料毁坏的重复过程。
It is believed that in fatigue there is a repeated process of ravaging the material.
网站的内容更新也不再是一个乏味的重复过程,它开始变得简单而有趣。
The updating of the contents of station has never been boring repeating proccess. It begins to become simple and interesting.
勺冷水下冲洗和重复过程,直到温度计形的面积不再改变颜色。
Rinse spoon under cold water and repeat procedure until thermometer-shaped area no longer changes color.
重复过程C,使用干净的手套和器具。
Repeat applying instruction found at Step C. Use clean gloves and applicator.
如果想要显示多个消息在同一个重复过程中发送,则可以使用一个’loop’联合片段。
If you want to show that multiple messages are sent in the same iteration, a 'loop' combined fragment can be used.
它还应该包括估算和项目进度计划,以及评审会议上做出的任何修改。(第三章包括一个用于产生WBS和估算的课重复过程。
It should also include estimates and a project schedule, including any revisions that were made during the review meetings. (Chapter 3 contains a repeatable process for generating a WBS and estimates.
对接下来的五个映射重复此过程。
Repeat this process for the next five mappings.
将重复此过程,直到构建完全成功为止。
You repeat this process until the build completes successfully.
必须对每个数据库重复此过程。
This process must be repeated for each database.
然后在每个NIS 从服务器和客户端上重复该过程。
Then repeat the process on each NIS slave server and client.
让其他手指也重复此过程。
Repeat this process for the other fingers.
然后,根据环境和系统数量,必须重复此过程才能创建多个***,通常需要在大量的计算机上创建同一映像。
Then depending on the environment and number of systems, this process must be repeated to create multiple installations, often creating the same image on a number of machines.
每次在应用程序中出现问题时,都需要重复此过程。
The process had to be repeated every time any problem occurred in an application.
如果发现更多依赖关系,可能需要重复此过程。
You may need to repeat this process as more dependencies are discovered.
用其他文档重复该过程,每次一个文档。
Repeat this process for your other documents, one at a time.
每天对数百甚至数千的的页面查看重复此过程,那么您的服务器和应用程序执行的查询要远远多于为了显示页面内容所需执行的查询。
Repeat this over hundreds or even thousands of page views each day, and your servers and applications will be executing far more queries than are necessary to show the page contents.
对剩下两个XSLT原语重复此过程。
Repeat this process for the remaining two XSLT primitives.
只有意识到利用经过验证的良好的可重复的过程,该组织才能指望尽快的把软件交付到顾客的手中。
Organizations can hope to get software into the hands of clients sooner only through realizing tried and true repeatable processes.
只有意识到利用经过验证的良好的可重复的过程,该组织才能指望尽快的把软件交付到顾客的手中。
Organizations can hope to get software into the hands of clients sooner only through realizing tried and true repeatable processes.
$firstVoiceSent
- 来自原声例句
请问您想要如何调整此模块?
感谢您的反馈,我们会尽快进行适当修改!
请问您想要如何调整此模块?
感谢您的反馈,我们会尽快进行适当修改!您所在的位置: &
Android Fragment之间的通讯处理(2)
Android Fragment之间的通讯处理(2)
wuyexiong.github.io
Fragment是google由3.0开始加入SDK的界面解决方案,后续由谷歌团队维护并发行了support包以支持低版本SDK来使用Fragment。本文重点介绍了如何解决模块之间的通讯的耦合问题。
MainActivity.java 首页 -_- 其实就那么一页
public&class&MainActivity&extends&FragmentActivity&&implements&HeadlinesFragment.OnHeadlineSelectedListener&{&&&&&&&&&&private&static&final&String&TAG&=&&MainActivity&;&&&&&&private&LocalBroadcastManager&mBroadcastM&&&&&private&BroadcastReceiver&mItemViewListClickR&&&&&&&&&&public&static&final&String&ACTION_ITEMVIEW_LISTCLICK&=&&tree.love.android.fragments.itemview.listclick&;&&&&&&&&&&@Override&&&&&public&void&onCreate(Bundle&savedInstanceState)&{&&&&&&&&&super.onCreate(savedInstanceState);&&&&&&&&&setContentView(R.layout.news_articles);&&&&&&&&&&&&&&&&&&if&(findViewById(R.id.fragment_container)&!=&null)&{&&&&&&&&&&&&&&&&&&&&&&&&&&&if&(savedInstanceState&!=&null)&{&&&&&&&&&&&&&&&&&return;&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&&&&&&&&&&&HeadlinesFragment&firstFragment&=&new&HeadlinesFragment();&&&&&&&&&&&&&&&&&&&&&&&&&&&firstFragment.setArguments(getIntent().getExtras());&&&&&&&&&&&&&&&&&&&&&&&&&&&getSupportFragmentManager().beginTransaction()&&&&&&&&&&&&&&&&&&&&&.add(R.id.fragment_container,&firstFragment).commit();&&&&&&&&&}&&&&&}&&&&&&private&void&initBroadcastListener()&{&&&&&&&&&mBroadcastManager&=&LocalBroadcastManager.getInstance(this);&&&&&&&&&IntentFilter&intentFilter&=&new&IntentFilter();&&&&&&&&&intentFilter.addAction(ACTION_ITEMVIEW_LISTCLICK);&&&&&&&&&mItemViewListClickReceiver&=&new&BroadcastReceiver()&&&&&&&&&{&&&&&&&&&&&&&@Override&&&&&&&&&&&&&public&void&onReceive(Context&context,&Intent&intent)&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&if(intent.getAction().equals(ACTION_ITEMVIEW_LISTCLICK))&&&&&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&&&&&Log.v(TAG,&ACTION_ITEMVIEW_LISTCLICK&+&&,&&+&intent.getIntExtra(&position&,&-1));&&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&}&&&&&&&&&};&&&&&&&&&mBroadcastManager.registerReceiver(mItemViewListClickReceiver,&intentFilter);&&&&&}&&&&&&&&&&&&&public&void&onArticleSelected(int&position)&{&&&&&&&&&&&&&&&&&&&ArticleFragment&articleFrag&=&(ArticleFragment)&&&&&&&&&&&&&&&&&getSupportFragmentManager().findFragmentById(R.id.article_fragment);&&&&&&&&&&if&(articleFrag&!=&null)&{&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&articleFrag.updateArticleView(position);&&&&&&&&&&}&else&{&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&ArticleFragment&newFragment&=&new&ArticleFragment();&&&&&&&&&&&&&Bundle&args&=&new&Bundle();&&&&&&&&&&&&&args.putInt(ArticleFragment.ARG_POSITION,&position);&&&&&&&&&&&&&newFragment.setArguments(args);&&&&&&&&&&&&&FragmentTransaction&transaction&=&getSupportFragmentManager().beginTransaction();&&&&&&&&&&&&&&&&&&&&&&&&&&&transaction.setCustomAnimations(android.R.anim.fade_in,&android.R.anim.fade_out,&android.R.anim.fade_in,&android.R.anim.fade_out);&&&&&&&&&&&&&&&&&&&&&&&&&&&transaction.replace(R.id.fragment_container,&newFragment);&&&&&&&&&&&&&&&&&&&&&&&&&&&transaction.addToBackStack(null);&&&&&&&&&&&&&&&&&&&&&&&&&&&mit();&&&&&&&&&}&&&&&}&&&&&&&&&&&&&&public&void&onEvent(ListClickEvent&event)&&&&&{&&&&&&&&&Log.v(&&,&&onEvent&position:&&+&event.getPosition());&&&&&}&&&&&&@Override&&&&&protected&void&onStart()&{&&&&&&&&&super.onStart();&&&&&&&&&&&&&&&&&&EventBus.getDefault().register(this);&&&&&&&&&&&&&&&&&&initBroadcastListener();&&&&&}&&&&&&@Override&&&&&protected&void&onPause()&&&&&{&&&&&&&&&super.onPause();&&&&&&&&&&&&&&&&&&EventBus.getDefault().unregister(this);&&&&&&&&&mBroadcastManager.unregisterReceiver(mItemViewListClickReceiver);&&&&&}&}&
HeadlinesFragment.java ListView菜单布局
public&class&HeadlinesFragment&extends&ListFragment&{&&&&&OnHeadlineSelectedListener&mC&&&&&&&&&&&public&interface&OnHeadlineSelectedListener&{&&&&&&&&&&&&&&&&&&public&void&onArticleSelected(int&position);&&&&&}&&&&&&@Override&&&&&public&void&onCreate(Bundle&savedInstanceState)&{&&&&&&&&&super.onCreate(savedInstanceState);&&&&&&&&&&int&layout&=&Build.VERSION.SDK_INT&&=&Build.VERSION_CODES.HONEYCOMB&?&android.R.layout.simple_list_item_activated_1&:&android.R.layout.simple_list_item_1;&&&&&&&&&setListAdapter(new&ArrayAdapter&String&(getActivity(),&layout,&Ipsum.Headlines));&&&&&}&&&&&&@Override&&&&&public&void&onStart()&{&&&&&&&&&super.onStart();&&&&&&&&&&if&(getFragmentManager().findFragmentById(R.id.article_fragment)&!=&null)&{&&&&&&&&&&&&&getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);&&&&&&&&&}&&&&&}&&&&&&@Override&&&&&public&void&onAttach(Activity&activity)&{&&&&&&&&&super.onAttach(activity);&&&&&&&&&&&&&&&&&&&try&{&&&&&&&&&&&&&mCallback&=&(OnHeadlineSelectedListener)&&&&&&&&&&}&catch&(ClassCastException&e)&{&&&&&&&&&&&&&throw&new&ClassCastException(activity.toString()&&+&&&must&implement&OnHeadlineSelectedListener&);&&&&&&&&&}&&&&&}&&&&&&@Override&&&&&public&void&onListItemClick(ListView&l,&View&v,&int&position,&long&id)&{&&&&&&&&&&&&&&&&&&mCallback.onArticleSelected(position);&&&&&&&&&&&&&&&&&&&Intent&intent&=&new&Intent(MainActivity.ACTION_ITEMVIEW_LISTCLICK);&&&&&&&&&intent.putExtra(&position&,&position);&&&&&&&&&LocalBroadcastManager.getInstance(getActivity()).sendBroadcast(intent);&&&&&&&&&&&&&&&&&&&EventBus.getDefault().post(new&ListClickEvent(position));&&&&&&&&&&&&&&&&&&&getListView().setItemChecked(position,&true);&&&&&}&}&
ArticleFragment.java 详情页布局。。就一个TextView啦。
public&class&ArticleFragment&extends&Fragment&{&&&&&final&static&String&ARG_POSITION&=&&position&;&&&&int&mCurrentPosition&=&-1;&&&&&@Override&&&&public&View&onCreateView(LayoutInflater&inflater,&ViewGroup&container,&&&&&&&&Bundle&savedInstanceState)&{&&&&&&&&&&&&&&if&(savedInstanceState&!=&null)&{&&&&&&&&&&&&mCurrentPosition&=&savedInstanceState.getInt(ARG_POSITION);&&&&&&&&}&&&&&&&&&return&inflater.inflate(R.layout.article_view,&container,&false);&&&&}&&&&&@Override&&&&public&void&onStart()&{&&&&&&&&super.onStart();&&&&&&&&&Bundle&args&=&getArguments();&&&&&&&&if&(args&!=&null)&{&&&&&&&&&&&&updateArticleView(args.getInt(ARG_POSITION));&&&&&&&&}&else&if&(mCurrentPosition&!=&-1)&{&&&&&&&&&&&&updateArticleView(mCurrentPosition);&&&&&&&&}&&&&&&&&&EventBus.getDefault().register(this);&&&&}&&&&&@Override&&&&public&void&onPause()&&&&{&&&&&super.onPause();&&&&&EventBus.getDefault().unregister(this);&&&&}&&&&&public&void&updateArticleView(int&position)&{&&&&&&&&TextView&article&=&(TextView)&getActivity().findViewById(R.id.article);&&&&&&&&article.setText(Ipsum.Articles[position]);&&&&&&&&mCurrentPosition&=&&&&&}&&&&&@Override&&&&public&void&onSaveInstanceState(Bundle&outState)&{&&&&&&&&super.onSaveInstanceState(outState);&&&&&&&&outState.putInt(ARG_POSITION,&mCurrentPosition);&&&&}&&&&&public&void&onEvent(ListClickEvent&event)&&&&{&&&&&Log.v(&ArticleFragment&,&&onEvent&&+&event.getPosition());&&&&}&
原文地址:
【编辑推荐】
【责任编辑: TEL:(010)】
内容导航&第 1 页: &第 2 页:
关于&&&&的更多文章
本书以谷歌的音乐播放器为例,深入剖析了Android 的重要组件和核
既然强大的Android Studio来了,有什么理由不去用呢?
讲师: 24人学习过讲师: 75人学习过讲师: 133人学习过
日-6日,GMIC 北京 2014全球移动互联网大会
日-6日,GMIC 北京 2014全球移动互联网大会
日-6日,GMIC 北京 2014全球移动互联网大会
本书使用通俗易懂的语言,通过大量的实例,从实际应用的角度出发,全面系统地介绍了网络服务操作系统平台、电子邮件系统、Web站
Windows Phone专家
Android开发专家
51CTO旗下网站Android开发:Fragment不同操作的生命周期 | 应用开发笔记谈谈Fragment的构造函数、重新创建(recreate)及相关
本文分享一些 Fragment使用经验,不准备详细介绍,只是介绍一些使用注意点,对于有一定开发经验的朋友应该会比较有帮助。对于我理解不对的地方,希望批评指正,谢谢!
1、Fragment初始化
一定要提供默认构造函数。
不能用构造函数传递参数!不要写带参数的构造函数。参数通过下面介绍的方式传递。
原因:Fragment会被重新销毁(Activity销毁的时候它里面的Fragment就被销毁了,可能因为内存不足,手机配置发生变化,横竖屏切换)。在重新创建的时候调用的是无参构造函数。
标准做法是:
在Fragment里添加获取Fragment的newInstance函数,以后获取Fragment就使用这个函数,不要使用构造函数新建Fragment!
public static MyFragment newInstance(Bundle args) {
MyFragment f = new MyFragment();
f.setArguments(args);
Fragment内部在初始化的时候需要获取外界传递的参数,这时候就用getArguments获取Bundle,再从Bundle里获取对应的参数。Bundle在Fragment销毁和重新创建的时候持续保存。
private TextView mTextV
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.fragment, container, false);
initViews(view);
private void initViews(View view){
mTextView = view.findViewById(R.id.tv);
Bundle bundle = getArguments();
mTextView.setText(bundle == null ?
: bundle.getString(text));
Activity里使用MyFragment时应该这样写:
Bundle args = new Bundle();
args.putString(text,Hello);
MyFragment f = MyFragment.newInstance(args)
其实还是有点小问题,具体见第5点。
2、关于getActivity()
Fragment的方法getActivity()只在被关联到Activity之后才会得到结果,也就是在onAttach和onDetach两个生命周期之间会非空(此时isAdded返回值是true)。其他时候不应该使用Activity!如果要使用,那说明你设计得不好。
使用所依附的Activity时应该判断getActivity是否为空或者isAdded是否为true。
Fragment依附的Activity随时可能被destroy掉!很多时候是在不经意间。机型适配的时候就会发现。
3、Activity引用
Fragment里不应该保留Activity引用!需要用到的时候通过getActivity()获取,因为那个引用不仅会导致内存泄露,而且在你用的时候,那个Activity可能已经不是正在显示的那个Activity了,这个Fragment也可能已经不是正在显示的那个Fragment了。
4、关于生命周期
通过add添加Fragment会触发Fragment生命周期,hide和show不会触发生命周期。
像微信那样,一个Activity里有四个Fragment,下面四个按钮,点击一个按钮显示其中一个Fragment。这种情况下,为了优化性能,你可以这样做:
起初只add第一个Fragment,其余三个Fragment都不添加。点击某个标签的时候先看对应的Fragment是否已经添加,没有则new一个并add这个Fragment,隐藏其他所有Fragment;如果已经添加了就直接show这个Fragment,隐藏其他所有Fragment。
5、关于Fragment销毁和重建
(1)Activity因内存不足、配置变化等原因被销毁的时候,包含的Fragment也会被销毁,无论此Fragment是否有id,系统都会调用Fragment的onSaveInstanceState,并且保留之前setArguments的Bundle,并且Activity的FragmentManager里的Fragment会被记录。
(2)由于(1)的原因,如果一个Activity里的fragment是通过add方式添加的,那么如果出现上述情况,就必须在Activity的add地方判断是否应该重新添加Fragment,避免重复添加。
(3)刚刚在第1点时说到Fragment在Activity中的使用。那个地方说得还是有点问题。其实应该给每个Fragment设一个tag,在FragmentTransaction.add方法添加Fragment的时候,第三个参数使用这个tag。初始化的时候,应该先从FragmentManager里查看这个Fragment是否已经有,如果有就直接使用原来的,如果没有再新建。
系统在重建Activity时会重建Fragment(调用Fragment的默认构造函数),并且将这些添加到FragmentManager里,并且设置之前setArguments时使用的Bundle。此时系统回调Fragment的onCreate(Bundle)、onActivityCreated(Bundle)、onViewStateRestored(Bundle)这类方法的时候,参数不为空。
注意:新建的Fragment和原来对应的Fragment不是同一个实例!
Activity内正确使用Fragment的代码如下:
FragmentManager fm = getSupportFragmentManager();
Fragment ft = fm.findFragmentByTag(MyFragment);
Bundle args = new Bundle();
args.putString(text,Hello);
MyFragment = ft == null ? MyFragment.newInstance(args) : (MyFragment)
if (savedInstanceState==null){
fm.beginTransaction()
.add(R.id.fragment, ft, MyFragment)
.commitAllowingStateLoss();
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'

参考资料

 

随机推荐