我正在尝试在OSX下定义一个指向python脚本的新URL处理程序.
我已将Python脚本包装到applet中(右键单击.py,然后打开Open With - > Build Applet)
我已将以下内容添加到applet的Info.plist中:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>Do My Thing</string>
<key>CFBundleURLSchemes</key>
<array>
<string>dmt</string>
</array>
</dict>
</array>
Run Code Online (Sandbox Code Playgroud)
我还使用了更多Internet首选项窗格将"dmt"指定为协议,但是当我尝试将协议链接到我的applet时,它说"将应用程序设置为帮助程序时出现问题"
谁知道我应该从哪里去?
谢谢
我有一个布局,指定相对维度的小部件大小,例如:
<LinearLayout ... layout_height="fill_parent">
<ImageView ... layout_height="wrap_content" />
<TextView ... layout_height="120dp" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
紧接着onCreate,我想知道ImageView的高度是多少.怎么做?
注:如果我打电话getHeight()的onCreate,我得到0.
我也试过imageView.postDelayed,它适用于2.1模拟器但在1.5模拟器上失败(我也得到0).
最后,我尝试创建一个Handler,然后我handler.postDelayed用10毫秒的延迟调用.它适用于2.1和1.5模拟器,但是当我在eclipse调试器中启动程序时失败(因此,我得出结论,使用延迟并不能保证在imageview布局后获得高度.)
package com.commonsware.android.threads;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
public class HandlerDemo extends Activity {
Thread mBackground;
ProgressBar bar;
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
bar.incrementProgressBy(5);
}
};
boolean isRunning = false;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
bar = (ProgressBar) findViewById(R.id.progress);
}
public void onStart() {
super.onStart();
bar.setProgress(0);
mBackground = new Thread(new Runnable() {
public void run() {
try { …Run Code Online (Sandbox Code Playgroud) 我刚刚发现有人正在调用 - 从信号处理程序 - 一个绝对不是我编写的异步信号安全函数.
所以,现在我很好奇:如何避免这种情况再次发生?我希望能够轻松确定我的代码是否在信号处理程序上下文中运行(语言是C,但解决方案不适用于任何语言吗?):
int myfunc( void ) {
if( in_signal_handler_context() ) { return(-1) }
// rest of function goes here
return( 0 );
}
Run Code Online (Sandbox Code Playgroud)
这是在Linux下.希望这不是一个简单的答案,否则我会觉得自己像个白痴.
感谢Google和大量的教程,我知道如何使用Java,Python,Ruby,Perl和Lisp创建自定义信号处理程序.我在网上找不到如何在Erlang中为SIGINT,SIGTERM,HUP等创建处理程序.
我正在尝试定期执行某项操作.我想创建一个类的新实例,比如说,持续3秒.最好通过使用Handler或Thread来实现它吗?我可以尝试一种更容易,更笨拙的方式吗?我真的不擅长使用线程 - 我想学习,但更重要的是我要在完成编程实践之前让它运行起来.
new Thread(){
public void run(){
//makes sure the player still has 3 lives left
while(game == false){
uiCallback.sendEmptyMessage(0);
try {
Thread.sleep(2000); // wait two seconds before drawing the next flower
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} //sleep for 2 seconds
}
}
}.start();
Run Code Online (Sandbox Code Playgroud) 我想在我的cellTable的一列上有一个处理程序.该列是一个ImageResourceCell,当我点击它时,它会删除该行这是我的代码
Column<MyObject, ImageResource> imageColumn =
new Column<MyObject, ImageResource>(newImageResourceCell()) {
@Override
public ImageResource getValue(MyObject object) {
return Bundle.Util.getInstance().deleteRegexButton();
}
};
cellTable.addColumn(imageColumn,SafeHtmlUtils.fromSafeConstant("<br/>");
Run Code Online (Sandbox Code Playgroud)
但是我不知道如何插入处理程序,如果可能的话?
欢迎任何建议
谢谢.
当我使用Handler.dispatchMessage(msg)时,handleMessage(Message msg)将在新线程上运行,但是当我使用Handler.sendMessage(msg)时,handleMessage(Message msg)将在主线程上运行,谁能告诉我和他们之间的区别.
谢谢!
演示:
public class MainActivity extends Activity
{
private String TAG = "MainActivity";
private Handler mHandler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
Log.i(TAG, "Handler:" + Thread.currentThread().getId() + " & arg1=" + msg.arg1);
super.handleMessage(msg);
}
};
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.i(TAG, "Main:" + Thread.currentThread().getId());
testMethod();
}
private void testMethod()
{
Thread thread = new Thread()
{
@Override
public void run()
{
Log.i(TAG, "Thread:" + Thread.currentThread().getId());
Message msg = mHandler.obtainMessage();
msg.arg1 …Run Code Online (Sandbox Code Playgroud) 我知道第一个你要这就是......为什么你会在世界上使用AsyncTask.
所以这是我的问题我正在研究一些Android应用程序(API为Android 2.1或更高版本),我正在测试模拟器,一切都很好,所以然后我测试HTC Sensation,它说NetworkOnMainThreadExeption!
我正在下载一些图片,然后在地图上绘制.
所以为了解决这个问题,每个(互联网连接)在这种情况下下载图片我必须把AsyncTask放到工作.
所以我需要一种方法如何知道所有图片何时完成所以我可以开始绘图..
我试了这么多,没有结果我不知道.我有一个处理程序的解决方案,但如果在较慢的网络上运行我得到nullpointer(因为图片没有下载).
所以请帮助我.
编辑:
这是一个想法:
Bitmap bubbleIcon ;
onCreate(){
...
// i am making call for Async
new ImgDown().execute(url);
//and then i calling functions and classes to draw with that picture bubbleIcon !
DrawOnMap(bubbleIcon);
}
//THIS IS ASYNC AND FOR EX. SUPPOSE I NEED TO DOWNLOAD THE PIC FIRST
class ImgDown extends AsyncTask<String, Void, Bitmap> {
private String url;
public ImgDown() {
}
@Override
protected Bitmap doInBackground(String... params) {
url = params[0];
try { …Run Code Online (Sandbox Code Playgroud) 看,我有以下代码:
我的行动:
final Intent intent = new Intent(getApplicationContext(), MyService.class)
.putExtra(UploadService.EXTRA_RESULT_RECEIVER, new ResultReceiver(null) {
@Override
protected void onReceiveResult(int resultCode, Bundle resultData) {
super.onReceiveResult(resultCode, resultData);
String result = resultData.getString(MyService.EXTRA_RESULT_SUCCESS);
...
imageView.setBackgroundDrawable(bitmap);// here my code fails
}
})
Run Code Online (Sandbox Code Playgroud)
为MyService:
Bundle b = new Bundle();
b.putString(EXTRA_RESULT_SUCCESS, response.toString());
resultReceiver.send(0, b);
Run Code Online (Sandbox Code Playgroud)
我的应用程序在"imageView.setBackgroundDrawable(bitmap)"行上失败,但有以下异常:
11-13 16:25:38.986: ERROR/AndroidRuntime(3586): FATAL EXCEPTION: IntentService[MyService]
android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
Run Code Online (Sandbox Code Playgroud)
但是当我像这样定义接收器(带处理程序)时,这不会发生:
new ResultReceiver(new Handler()){.../*here goes the same code as in the first example. nothing …Run Code Online (Sandbox Code Playgroud)