小编Com*_*ish的帖子

AsyncTask线程永远不会死

我正在使用AsyncTasks来获取数据以响应用户按下按钮.这很好用并且在获取数据时保持接口响应,但是当我检查Eclipse调试器中发生了什么时,我发现每次AsyncTask创建一个新的(这通常是因为它们只能使用一次),正在创建一个新线程,但从未终止.

结果是大量的AsyncTask线程就坐在那里.我不确定这在实践中是否是一个问题,但我真的想摆脱那些额外的线程.

我怎么能杀死这些线程?

multithreading android android-asynctask

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

在Android中旋转drawable

如何Drawable在绘制资源时从资源中加载?例如,我想绘制一个箭头,并且能够在绘制时将其旋转到面向不同的方向?

graphics android

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

在AsyncTask中没有调用onPostExecute(Handler运行时异常)

我有一个AsyncTask获取一些数据,然后用这个新数据更新UI.它已经工作好几个月,但我最近添加了一个功能,当有新数据时显示通知.现在,当我的应用程序通过通知启动时,有时我会得到此异常并且onPostExecute不会被调用.

这是应用程序启动时发生的情况:

1)展开UI并查找视图

2)取消AlarmManager检查新数据并重置警报的警报(通过).(这样,如果用户禁用警报,则在下次重新启动之前将其取消.)

3)开始AsyncTask.如果应用程序是从通知启动的,请传入一些数据,然后取消通知.

我被困在导致这个异常的原因上.似乎异常来自AsyncTask代码,所以我不确定如何解决它.

谢谢!

这是一个例外:

I/My App(  501): doInBackground exiting
W/MessageQueue(  501): Handler{442ba140} sending message to a Handler on a dead thread
W/MessageQueue(  501): java.lang.RuntimeException: Handler{442ba140} sending message to a Handler on a dead thread
W/MessageQueue(  501):  at android.os.MessageQueue.enqueueMessage(MessageQueue.java:179)
W/MessageQueue(  501):  at android.os.Handler.sendMessageAtTime(Handler.java:457)
W/MessageQueue(  501):  at android.os.Handler.sendMessageDelayed(Handler.java:430)
W/MessageQueue(  501):  at android.os.Handler.sendMessage(Handler.java:367)
W/MessageQueue(  501):  at android.os.Message.sendToTarget(Message.java:348)
W/MessageQueue(  501):  at android.os.AsyncTask$3.done(AsyncTask.java:214)
W/MessageQueue(  501):  at java.util.concurrent.FutureTask$Sync.innerSet(FutureTask.java:252)
W/MessageQueue(  501):  at java.util.concurrent.FutureTask.set(FutureTask.java:112) …
Run Code Online (Sandbox Code Playgroud)

android alarmmanager android-asynctask

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

AlarmManager和ScheduledExecutorService之间的区别

除了设置和准确的时间(即午夜)与设置延迟(即24小时)之外,使用AlarmManagerScheduledExecutorService定期运行任务之间的区别是什么?

就我而言,我需要运行一些代码来检查每晚的新数据,并在有新数据时创建新通知.

谢谢!

android scheduling alarmmanager

14
推荐指数
3
解决办法
9330
查看次数

Android INSTALL_FAILED_INVALID_URI

当我尝试通过Eclipse将Android应用程序安装到设备时,我刚刚开始收到以下错误:

Installation failed due to invalid URI!
Please check logcat output for more details.
Launch canceled!
Run Code Online (Sandbox Code Playgroud)

我还尝试在bin文件夹中安装APK 和通过adb 安装签名的APK.当我这样做时,我收到一个INSTALL_FAILED_INVALID_URI错误.

我没有改变任何关于我的设置,它曾经没有问题的工作.

有任何想法吗?谢谢!

LogCat输出:

D/AndroidRuntime(32345): CheckJNI is OFF
D/dalvikvm(32345): Unable to stat classpath element '/system/framework/com.orange.authentication.simcard.jar'
D/AndroidRuntime(32345): Calling main entry com.android.commands.pm.Pm
V/Performance(32111): >>com.android.defcontainer.DefaultContainerService@40d944a8 onCreate
V/Performance(32111): <<com.android.defcontainer.DefaultContainerService@40d944a8 onCreate, 3ms
V/Performance(32111): >>com.android.defcontainer.DefaultContainerService@40d944a8 onBind
V/Performance(32111): <<com.android.defcontainer.DefaultContainerService@40d944a8 onBind, 1ms
W/asset   (32111): Asset path /data/local/tmp/CS2110Project.apk is neither a directory nor file (type=0).
W/DefContainer(32111): Failed to parse package
W/ActivityManager(  744): No content provider found for …
Run Code Online (Sandbox Code Playgroud)

android apk

10
推荐指数
5
解决办法
5万
查看次数

将整数转换为字符串而不分配内存

当垃圾收集器运行时,我的Android游戏中偶尔会出现滞后现象.我运行DDMS并发现我的应用程序分配的所有内存都来自这一行:

scoreString = String.valueOf(score);
Run Code Online (Sandbox Code Playgroud)

在不分配任何内存的情况下将整数转换为字符串的最佳方法是什么?

java android memory-management

7
推荐指数
1
解决办法
1029
查看次数

AsyncTask中的ProgressDialog抛出异常

我正在尝试在获取数据ProgressDialog时进行简单的显示AsyncTask.在我的onPreExecute()方法中我有这个:

pd = ProgressDialog.show(c, "Loading...", "Please wait");
Run Code Online (Sandbox Code Playgroud)

c传递到我的构造背景下AsyncTaskthis.getApplicationContext().不幸的是,我不断收到此消息的异常:

无法添加窗口 - 令牌null不适用于应用程序

我究竟做错了什么?

更新:使用this而不是this.getApplicationContext()显示另一个问题.当我打电话时ProgressDialog.show(...,会显示ProgressDialog,但直到AsyncTask完成后才会显示.换句话说,数据加载然后显示对话框.如果我包括pd.dismiss()在我onPostExecute()当时我甚至从未看到对话框(因为它在打开之前已关闭).

最终解决方案:事实证明,这fetch.get()是占用UI线程而不是让ProgressDialog显示.

android progressdialog android-asynctask

6
推荐指数
1
解决办法
4241
查看次数

隐藏活动时播放视频

通过思考"Pandora for Android",最容易理解这方面的一个例子.

我的活动有一个VideoView在课堂上播放讲座.我希望能够不间断地从此活动切换到另一个活动(在我的应用程序中,或转到另一个应用程序(主屏幕,其他一些应用程序)).

使用Pandora示例我可以在播放音乐时转到"切换广播电台"视图,然后我可以转到主屏幕并继续无缝导航.

这仅适用于视频或音频吗?我可以只播放视频文件中的音频,然后轻松切换回来吗?

video android android-videoview

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

仅接受sum类型的一个变量作为OCaml函数参数

我有一个源于现有代码的大量类型.让我们说它看起来像这样:

type some_type =
  | Variant1 of int
  | Variant2 of int * string
Run Code Online (Sandbox Code Playgroud)

虽然这两个Variant1Variant2在其他地方使用,我有一个只能对特定的功能Variant2:

let print_the_string x =
  match x with
  | Variant2(a,s) -> print_string s; ()
  | _ -> raise (Failure "this will never happen"); ()
Run Code Online (Sandbox Code Playgroud)

由于此辅助函数仅从另一个地方调用,因此很容易显示它将始终使用输入调用Variant2,而不是输入Variant1.

让我们说这个电话看起来像这样:

let () =
  print_the_string (Variant2(1, "hello\n"))
Run Code Online (Sandbox Code Playgroud)

如果Variant1Variant2是不同的类型,我希望OCaml的推断类型Variant2 -> ()print_the_string,但是,因为它们是相同的总和型的两种变体,OCaml的推断签名some_type -> ().

当我遇到一个抛出异常的程序时,会发出一条消息,例如"这将永远不会发生",我通常认为原来的程序员做错了什么.

当前的解决方案有效,但这意味着程序中的错误将在运行时捕获,而不是作为编译器错误而不是更好.

理想情况下,我希望能够像这样注释函数:

let print_the_string (x : some_type.Variant2) = …
Run Code Online (Sandbox Code Playgroud)

ocaml type-inference

3
推荐指数
2
解决办法
487
查看次数

ImageView中的位图在屏幕上被裁剪掉

我正在开发一个需要下载图像并在ImageView中显示它的Android应用程序.Bitmap传递给主java文件并添加到图像视图中,如下所示:

comic = (ImageView) findViewById(R.id.comic);
comic.setImageBitmap(c.getImageBitmap());
Run Code Online (Sandbox Code Playgroud)

这是有效的,除了图像的左侧从屏幕上消失.ImageView位于ScrollView中,可保持正确的大小.这意味着ScrollView右侧有黑色空间,图像向左侧切断.

ImageView的XML是这样的:

<ScrollView 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <HorizontalScrollView 
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">

        <ImageView 
            android:id="@+id/comic" 
            android:layout_height="fill_parent"
            android:layout_width="fill_parent" 
            android:layout_gravity="center"
            android:src="@drawable/xkcdlogo" />
    </HorizontalScrollView>
</ScrollView>
Run Code Online (Sandbox Code Playgroud)

知道为什么我的图像会被切断吗?

谢谢!

java android bitmap imageview

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

使用系统中的图标与将其复制到项目中

对于常见的Android图标(例如上下文菜单图标),我通常会将标准的Android图标复制到我的项目中.我最近意识到你也可以从系统中获取这些图标android.R.drawable.blablabla.所以我的问题是,有没有理由更喜欢一种方法而不是另一种方法?

如果使用系统更好,你如何用XML访问它们?

谢谢!

android

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