如果我尝试在onNewIntent方法中切换导航选项卡,我的FragmentActivity(singleTop)会给我IllegalStateException.
更具体地说,我的应用程序使用带有三个选项卡的SherlockActionBar,一个选项卡在收到推送通知时更新(并且调用intent),如果应用程序在另一个选项卡上暂停,当我收到意图时(在onNewIntent中)我更改使用bar.setSelectedNavigationItem()将选项卡(以及片段)添加到第三个选项卡,这导致了我的问题.如果应用程序在第三个选项卡上暂停,则不会发生异常.
码:
@Override
public void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Bundle bundle = intent.getExtras();
if (bundle != null) {
bar.setSelectedNavigationItem(Utils.ORDER_STATUS_TAB_ID);
} else {
}
}
Run Code Online (Sandbox Code Playgroud)
推送通知意图:
Intent notificationIntent = new Intent(context,
MainActivity.class);
notificationIntent.putExtra("orderUpdate",
new Gson().toJson(orderUpdate));
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent contentIntent = PendingIntent.getActivity(context, 0,
notificationIntent, 0);
notification.contentIntent = contentIntent;
Run Code Online (Sandbox Code Playgroud)
TabListener方法(在堆栈跟踪中的第56行注释)
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
ft = activity.getSupportFragmentManager().beginTransaction();
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
if (mFragment == null) {
mFragment = Fragment
.instantiate(activity, mClass.getName(), mArgs);
ft.add(android.R.id.content, mFragment, tag);
ft.commit();
} else {
ft.attach(mFragment); …Run Code Online (Sandbox Code Playgroud) 我使用Hibernate Search在Web应用程序上索引和全文搜索项目,没有问题!
从我的pom.xml:
<hibernate.search.version>3.4.2.Final</hibernate.search.version>
<apache.lucene.version>3.6.2</apache.lucene.version>
<apache.solr.version>3.6.2</apache.solr.version>
<hibernate.version>3.6.9.Final</hibernate.version>
Run Code Online (Sandbox Code Playgroud)
现在,在开始制作之前,我试图使用Apache JMeter对我的Web应用程序的搜索功能进行压力测试.当使用多个线程进行测试时,我会收到大量以下异常:
17:11:57,670 ERROR LogErrorHandler:82 - Exception occurred org.apache.lucene.store.LockObtainFailedException: Lock obtain timed out: SimpleFSLock@/opt/myapp/item_index/myapp.item.domain.Item/write.lock
Primary Failure:
Entity myapp.item.domain.Item Id 4 Work Type org.hibernate.search.backend.DeleteLuceneWork
org.apache.lucene.store.LockObtainFailedException: Lock obtain timed out: SimpleFSLock@/opt/myapp/item_index/myapp.item.domain.Item/write.lock
at org.apache.lucene.store.Lock.obtain(Lock.java:84)
at org.apache.lucene.index.IndexWriter.<init>(IndexWriter.java:1098)
at org.hibernate.search.backend.Workspace.createNewIndexWriter(Workspace.java:202)
at org.hibernate.search.backend.Workspace.getIndexWriter(Workspace.java:180)
at org.hibernate.search.backend.impl.lucene.PerDPQueueProcessor.run(PerDPQueueProcessor.java:103)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
17:11:57,670 ERROR PerDPQueueProcessor:118 - Unexpected error in Lucene Backend:
org.hibernate.search.SearchException: Unable to remove class myapp.item.domain.Item#4 from index.
at org.hibernate.search.backend.impl.lucene.works.DeleteExtWorkDelegate.performWork(DeleteExtWorkDelegate.java:77)
at org.hibernate.search.backend.impl.lucene.PerDPQueueProcessor.run(PerDPQueueProcessor.java:106)
at …Run Code Online (Sandbox Code Playgroud) 我有一个由不同片段组成的ListView,它包含文本和链接(在另一个片段内).链接是可见的,具体取决于列表视图模型的状态.
为简单起见,假设链接是可见的,具体取决于listview模型的布尔字段,如果它是真的可见,否则是不可见的.
首先链接是可见的,我复制链接位置(加密),我等待我的模型更改(即布尔值为false),刷新页面后链接消失.(正确!)
如果我尝试在浏览器中提供URL(之前复制过),我会收到一个WicketRuntimeException,告诉我找不到此链接的监听器.
为了更完整,链接在片段内:
<wicket:fragment wicket:id="reservationRatingFragment">
<li>
<div>
<img src="/img/good.png" />
</div>
<p>
<a wicket:id="ratingGoodLink" href="#"> <wicket:message
key="messaging.reservation.rating.good" />
</a>
</p>
</li>
</wicket:fragment>
Run Code Online (Sandbox Code Playgroud)
当我说隐形时,我的意思是我将片段的标记容器设置为.setVisible(false);
为什么会这样?我想如果我回想起一个不再可见的链接,框架应该跳过它并刷新我当前所在的页面(或者将我重定向到基页).
例如,如果我复制链接并更改BasePage(例如转到主页),当我回忆起复制的URL时,异常仍然会发生.
编辑:
在第一个片段中:
WebMarkupContainer msgRatingContainer = new WebMarkupContainer("messageRatingContainer") {
private static final long serialVersionUID = 1L;
@Override
public void onConfigure() {
setVisible(message.getType() == MessageType.RATING);
}
};
if (msgRatingContainer.isVisible()) {
if (message.getType() == MessageType.RATING) {
msgRatingContainer.add(new ReservationRatingFragment("messageRatingSection",
"reservationRatingFragment", this, item, message));
}
Run Code Online (Sandbox Code Playgroud)
嵌套片段(ReservationRatingFragment):
public ReservationRatingFragment(String id, String markupId,MarkupContainer markupContainer, Item item, Message msg) {
super(id, …Run Code Online (Sandbox Code Playgroud)