我AsyncTask用来执行一些后台计算,但我无法找到正确的方法来处理异常.目前我使用以下代码:
private class MyTask extends AsyncTask<String, Void, String>
{
private int e = 0;
@Override
protected String doInBackground(String... params)
{
try
{
URL url = new URL("http://www.example.com/");
}
catch (MalformedURLException e)
{
e = 1;
}
// Other code here...
return null;
}
@Override
protected void onPostExecute(String result)
{
if (e == 1)
Log.i("Some Tag", "An error occurred.");
// Perform post processing here...
}
}
Run Code Online (Sandbox Code Playgroud)
我相信变量e可以由主线程和工作线程写入/访问.据我所知,onPostExecute()只有在doInBackround()完成后才会运行,我可以省略任何同步吗?
这是坏代码吗?是否有一个约定或正确的方法来处理异常AsyncTask?
我AppWidgetProvider班上有以下代码.
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
Log.i("Custom", "Update");
}
@Override
public void onReceive(Context context, Intent intent) {
Log.i("Custom", "Recieve");
}
Run Code Online (Sandbox Code Playgroud)
如果我注释掉该onReceive方法,onUpdate每次我将小部件添加到主屏幕时都会调用该方法,如果我不这样做则不会运行.有什么想法吗?
我正在编写一个Android应用程序,并使用工作线程来处理某些信息.阅读完我的代码后,我现在不确定它是否是线程安全的.
我已经编写了我的代码的简化版本,我省略了Handler用于与主线程进行通信的对象,显然是进程本身.
public class myClass implements Runnable
{
private String myString;
@Override
public void run()
{
myString = "Some Value";
}
}
Run Code Online (Sandbox Code Playgroud)
通过运行类似于此的东西来调用它.
myClass class = new myClass();
Thread thread = new Thread(class);
thread.start()
Run Code Online (Sandbox Code Playgroud)
那么,这个代码是不是线程安全的,因为我myString在run()函数中修改(在主线程中声明)?
在PHP中,如果我们需要匹配类似的东西["one","two","three"],我们可以使用以下正则表达式preg_match.
$pattern = "/\[\"(\w+)\",\"(\w+)\",\"(\w+)\"\]/"
Run Code Online (Sandbox Code Playgroud)
通过使用括号,我们还可以提取单词一,二和三.我知道MatcherJava 中的对象,但无法获得类似的功能; 我只能提取整个字符串.我将如何模仿preg_matchJava中的行为?
我正在开发一个AppWidget我需要一个TextView显示文本作为选框的地方.我已经尝试使用以下代码(正如常规中所做的那样Activity),但文本不会滚动.
<TextView
android:layout_width="150dip"
android:layout_height="wrap_content"
android:text="@string/marquee_forever"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever" />
Run Code Online (Sandbox Code Playgroud)
谁能告诉我如何解决这个问题?