小编pva*_*ans的帖子

如何使用Activity中的取消按钮强制IntentService立即停止?

我有一个从Activity启动的IntentService,我希望能够通过活动中的"取消"按钮立即停止活动.一旦按下"取消"按钮,我希望服务停止执行代码行.

我发现了许多与此类似的问题(即这里,这里,这里,这里),但没有好的答案. Activity.stopService()并立即Service.stopSelf()执行该Service.onDestroy()方法,然后onHandleIntent()在销毁服务之前让代码完成.

由于显然没有保证立即终止服务线程的方法,我能找到的唯一推荐的解决方案(这里)是在服务中有一个布尔成员变量,可以在onDestroy()方法中切换,然后几乎每一行都有onHandleIntent()包含在自己的"if"子句中的代码查看该变量.这是编写代码的一种糟糕方式.

有没有人知道在IntentService中更好的方法?

android intentservice

43
推荐指数
3
解决办法
4万
查看次数

如何在执行下一行代码之前强制视图重绘

我有一个LinearLayout,我想更改其中一个子视图(一个ImageButton)被单击时的背景颜色.我能够做到这一点,但不能立即做到 - 直到稍后才会在屏幕上发生更改(我认为在onResume调用期间).我想知道在下一行代码执行之前,如何在设置背景后强制布局重绘.这是按钮的OnClickListener的onClick方法:

public void onClick(View v) {

  LinearLayout parentLayout = (LinearLayout) v.getParent();
  parentLayout.setBackgroundResource(R.color.my_color);
  SystemClock.sleep(1000); //ms

}
Run Code Online (Sandbox Code Playgroud)

sleep命令在那里测试重绘是在它之前还是之后发生.结果:之后.关于这个主题的大多数问题(比如这里这里)都说在视图上使用invalidate().我已经使用过的命令parentLayout.invalidate();,parentLayout.postInvalidate();以及parentLayout.refreshDrawableState();在后台和睡眠线之间,都无济于事.重写仍然发生在sleep命令之后.任何人都可以告诉我如何立即实现它吗?

其他可能有用的信息:LinearLayout绑定到ListView的行,上面的OnClickListener位于扩展SimpleCursorAdapter的自定义类中,而不是活动本身.(这样我就可以为ListView中的每一行设置一个监听器.)

android redraw

21
推荐指数
1
解决办法
3万
查看次数

更新SimpleCursorAdapter,同时在ListView中保持滚动位置

我的问题:每当我通过其(自定义的)SimpleCursorAdapter更新其内容时,我的ListView会将其滚动位置重置为顶部.我希望ListView在更新时保持其滚动位置.

我开始时每次都使用创建一个新的适配器实例ListView.setAdapter(),但根据这个讨论,我应该更新适配器而不是重置它.我无法找到一种方法来为SimpleCursorAdapter正常工作.

以下是我尝试过的一些事情,省略了方法参数:
- SimpleCursorAdapter.changeCursorAndColumns()使用新光标成功更新适配器但仍然重置滚动位置.
- SimpleCursorAdapter.changeCursor()行为方式相同.
- SimpleCursorAdapter.swapCursor()直到api 11才可用,我正在为api 8开发.
- SimpleCursorAdapter.notifyDataSetChanged()不更新ListView.(也许我还缺少另一个步骤.)
- ListView.invalidate()不更新ListView.
- SimpleCursorAdapter.requery()使ListView为空白,不推荐使用.
- 我对ListView.setSelection()解决方案很熟悉,但我不希望我的ListView在更新时完全移动.这会将其捕捉到列表中的某个位置.

这似乎应该是一个普通而简单的问题.有人处理过吗?

android listview scroll-position simplecursoradapter

9
推荐指数
1
解决办法
5772
查看次数

响应d3过渡期间的滴答事件

我有一个svg线元素,它指向一个svg矩形元素。当矩形移动时,直线需要跟随它。用d3过渡移动矩形时,有没有办法做到这一点?我正在寻找使我能够响应矩形过渡的每个刻度的内容。为力布局模拟提供了类似的东西:

force.on("tick", function() {
  link.attr("x1", function(d) { return d.source.x; })
     .attr("y1", function(d) { return d.source.y; })
     .attr("x2", function(d) { return d.target.x; })
     .attr("y2", function(d) { return d.target.y; });

  node.attr("cx", function(d) { return d.x; })
     .attr("cy", function(d) { return d.y; });

});
Run Code Online (Sandbox Code Playgroud)

这可用于在每个时间步移动两个元素。可以在没有布局的情况下进行任意过渡吗?transition.each()如果它可以侦听过渡标记事件,但似乎只能侦听过渡开始和结束事件,似乎可以执行此操作。

我不想在line元素上设置单独的过渡,因为我需要保证两个元素完全同时移动。

javascript d3.js

5
推荐指数
1
解决办法
1293
查看次数