小编mon*_*ner的帖子

如何从衍生的后台服务访问原始活动的视图

我有一个名为A的活动,在选择菜单项0时,它产生服务B,它在新线程中启动一个可运行的C. 我在活动A中有一个TextView,我想在线程C中访问它.

我已经尝试将TextView作为公共静态字段,但这会产生以下错误:

07-21 07:26:25.723: ERROR/AndroidRuntime(1975): android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
07-21 07:26:25.723: ERROR/AndroidRuntime(1975):     at android.view.ViewRoot.checkThread(ViewRoot.java:2440)
07-21 07:26:25.723: ERROR/AndroidRuntime(1975):     at android.view.ViewRoot.invalidateChild(ViewRoot.java:522)
07-21 07:26:25.723: ERROR/AndroidRuntime(1975):     at android.view.ViewRoot.invalidateChildInParent(ViewRoot.java:540)
07-21 07:26:25.723: ERROR/AndroidRuntime(1975):     at android.view.ViewGroup.invalidateChild(ViewGroup.java:2332)
07-21 07:26:25.723: ERROR/AndroidRuntime(1975):     at android.view.View.invalidate(View.java:4437)
07-21 07:26:25.723: ERROR/AndroidRuntime(1975):     at android.widget.TextView.updateAfterEdit(TextView.java:4593)
07-21 07:26:25.723: ERROR/AndroidRuntime(1975):     at android.widget.TextView.handleTextChanged(TextView.java:5932)
07-21 07:26:25.723: ERROR/AndroidRuntime(1975):     at android.widget.TextView$ChangeWatcher.onTextChanged(TextView.java:6081)
07-21 07:26:25.723: ERROR/AndroidRuntime(1975):     at android.text.SpannableStringBuilder.sendTextChange(SpannableStringBuilder.java:889)
07-21 07:26:25.723: ERROR/AndroidRuntime(1975):     at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:352)
07-21 07:26:25.723: ERROR/AndroidRuntime(1975):     at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:269)
07-21 07:26:25.723: ERROR/AndroidRuntime(1975):     at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:432) …
Run Code Online (Sandbox Code Playgroud)

user-interface android pass-by-reference textview

29
推荐指数
2
解决办法
4万
查看次数

Java:"[B @ 1ef9157"]背后的语法和含义?二进制/地址?

嘿,我想弄清楚[B @前缀在java中意味着什么. 当我尝试打印字节数组时它们出来了.但是,大小为32和大小为4的字节数组的长度相同.始终"[@ B1234567".

这是什么?此外,它们具有仅打印十六进制值的属性.我知道它不能只是二进制打印,因为会出现随机扩展的ascii字符.

下面是byte []到byte []哈希表映射打印的示例,其中映射由冒号分隔,这些是4字节键和32字节元素的字节数组.

[B@1ef9157:[B@1f82982
[B@181ed9e:[B@16d2633
[B@27e353:[B@e70e30
[B@cb6009:[B@154864a
[B@18aaa1e:[B@3c9217
[B@20be79:[B@9b42e6
[B@16925b0:[B@14520eb
[B@8ee016:[B@1742700
[B@1bfc93a:[B@acb158
[B@107ebe1:[B@1af33d6
[B@156b6b9:[B@17431b9
[B@139b78e:[B@16c79d7
[B@2e7820:[B@b33d0a
[B@82701e:[B@16c9867
[B@1f14ceb:[B@89cc5e
[B@da4b71:[B@c837cd
[B@ab853b:[B@c79809
[B@765a16:[B@1ce784b
[B@1319c:[B@3bc473
Run Code Online (Sandbox Code Playgroud)

java syntax binary hex

24
推荐指数
1
解决办法
2万
查看次数

为什么 Pry shell 在 Phoenix/cowboy 中超时得这么快?(shell进程退出原因:shutdown)

当我使用 IEx.pry 或断点(通过:int.break())时,交互式 shell 死得太快,并且在丢失会话之前我只有大约 10 秒的时间:

\n

** (EXIT from #PID<0.606.0>) shell process exited with reason: shutdown

\n

10 秒\xe2\x80\x99 不足以在 shell/调试器中高效地调试我的代码。:supervisor.child_spec我最好的猜测是,我需要覆盖a 中的默认超时,但我不能 100% 确定。

\n

这是我到目前为止尝试过的(以及为什么他们到目前为止还没有工作):

\n
    \n
  • 将MyApp.Application 中Supervisor.start_link()的 child_specs 中的:shutdown 参数增加为 :infinity。
  • \n
  • 更新了牛仔超时(idle_timeout、linger_timeout、request_timeout、shutdown_timeout),因为观察者表明我的请求是牛仔进程。不过,我不认为\xe2\x80\x99很可能\xe2\x80\x99是牛仔。如果默认为 60 秒,则 I\xe2\x80\x99m 甚至还没有接近 60 秒。
  • \n
  • 我没有使用 IEx.pry,而是尝试使用调试器(通过:ni.break
  • \n
  • 只是注意到我可以\xe2\x80\x99t 使用mix test --trace,它将超时设置为:无穷大。由于我\xe2\x80\x99m 尝试调试非测试端点操作,因此此标志不会有帮助。
  • \n
\n

人们如何使用调试器/IEx.pry?(我来自 Ruby/JS 世界,所以我喜欢有一些时间来检查变量。)人们是否没有像我一样遇到 10 秒超时?或者我\xe2\x80\x99m 是否缺少一些常见配置来满足我的故障排除需求?

\n

我的主管/孩子在 application.ex 中的配置: …

erlang timeout elixir cowboy phoenix-framework

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

为什么线程没有停止?

我的服务生成一个新线程,并根据通常推荐的中断()方法java方法停止它.当我停止服务时,我在onDestroy()中停止线程.服务停止,并且到达中断代码.但是,很快就会从Runnable的开头重新开始.

public class DoScan extends Service {
    public volatile Thread runner;

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onCreate() {
        super.onCreate();

        startThread();
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        android.util.Log.v("@@@@@@@@@@@@@@@@@@@@", "DoScan.onDestroy");
        stopThread();
    }


    public synchronized void startThread(){
        if(runner == null){
            android.util.Log.v("@@@@@@@@@@@@@@@@@@@@", "DoScan.startthread");     
            runner = new Thread(new ScanningThread());
            runner.start();
        }
    }
    /* use a handler in a loop cycling through most of oncreate.
     * the scanningthread does the work, then notifies the …
Run Code Online (Sandbox Code Playgroud)

multithreading android

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

Java:我在哪里可以找到高级文件操作源/库?

我正在将任意字节数组(模拟32个字节的病毒签名)写入任意文件,我需要代码来覆盖给定文件偏移量的特定文件.我的具体问题是:是否有可用于执行此特定任务的源代码/库?

我也遇到过Python文件操作的问题.我正在寻找一组可以杀死一行,剪切/复制/粘贴等功能.我的假设是这些是非常常见的任务,我在Java API和谷歌搜索中都找不到它.

很抱歉没有RTFM; 我没有遇到任何信息,我一直在寻找一段时间.

java file-io

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

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