【发布时间】:2014-08-04 22:14:53
【问题描述】:
我正在尝试在 AsyncTask doInBackground 中运行此代码,但在应用程序关闭并在日志中向我抛出了一个错误,这并不意味着。
AlertDialog 的早期执行是在 OnPostExecute 函数中执行的,但我发出警告:“应用程序可能在其主线程上做太多工作。”有时应用程序已关闭。
出于这个原因,我决定在 doInBackground 中这样做,但正如我上面所写的,我收到了一个错误,但这并不意味着。
有什么帮助吗?
谢谢
功能:
//AsyncTask para insertar Personas
class Insertar extends AsyncTask<String,String,String>{
private Activity context;
Insertar(Activity context){
this.context=context;
}
@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
String result = insertar();
if ( result.equals("0") ){
AlertDialog.Builder alert = new AlertDialog.Builder(getActivity());
alert.setTitle("Dona1Click - Patrocinador");
alert.setMessage("Lo sentimos, ha excedido el limite diaro de 20 clicks");
alert.setNegativeButton("Close", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
dialog.dismiss();
}
});
alert.show();
}
if ( result.equals("1") ){
AlertDialog.Builder alert = new AlertDialog.Builder(getActivity());
alert.setTitle("Dona1Click - Patrocinador");
WebView wv = new WebView(getActivity());
wv.loadUrl("http:\\www.google.com");
wv.setWebViewClient(new WebViewClient() {
public void onPageFinished(WebView view, String url) {
if(pd.isShowing()&&pd!=null)
{
pd.dismiss();
}
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return false;
}
});
alert.setView(wv);
alert.setNegativeButton("Close", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
dialog.dismiss();
}
});
alert.show();
// Para colocar un loading
pd = ProgressDialog.show(getActivity(), "", "Loading...",true);
//--------------------------
}
return null;
}
@Override
protected void onPostExecute(String result) {
}
日志:
08-04 18:01:12.221: D/dalvikvm(1229): GC_FOR_ALLOC freed 39K, 5% free 2808K/2928K, paused 82ms, total 86ms
08-04 18:01:12.221: I/dalvikvm-heap(1229): Grow heap (frag case) to 4.604MB for 1872016-byte allocation
08-04 18:01:12.391: D/dalvikvm(1229): GC_FOR_ALLOC freed <1K, 3% free 4636K/4760K, paused 145ms, total 145ms
08-04 18:01:13.381: D/gralloc_goldfish(1229): Emulator without GPU emulation detected.
08-04 18:01:18.251: D/dalvikvm(1229): GC_FOR_ALLOC freed 94K, 4% free 4863K/5040K, paused 356ms, total 359ms
08-04 18:01:18.251: I/dalvikvm-heap(1229): Grow heap (frag case) to 5.431MB for 635812-byte allocation
08-04 18:01:18.481: D/dalvikvm(1229): GC_FOR_ALLOC freed <1K, 4% free 5483K/5664K, paused 222ms, total 222ms
08-04 18:01:19.551: I/ActionBar(1229): null seleccionada.
08-04 18:01:19.951: D/dalvikvm(1229): GC_FOR_ALLOC freed 11K, 3% free 5571K/5704K, paused 311ms, total 315ms
08-04 18:01:19.961: I/dalvikvm-heap(1229): Grow heap (frag case) to 7.714MB for 2304016-byte allocation
08-04 18:01:20.231: D/dalvikvm(1229): GC_FOR_ALLOC freed <1K, 2% free 7821K/7956K, paused 269ms, total 269ms
08-04 18:01:23.321: I/Choreographer(1229): Skipped 70 frames! The application may be doing too much work on its main thread.
08-04 18:01:23.851: I/Choreographer(1229): Skipped 42 frames! The application may be doing too much work on its main thread.
08-04 18:01:26.331: V/WebViewChromium(1229): Binding Chromium to the background looper null
08-04 18:01:26.331: W/dalvikvm(1229): threadid=11: thread exiting with uncaught exception (group=0xb3aa1ba8)
08-04 18:01:26.361: E/AndroidRuntime(1229): FATAL EXCEPTION: AsyncTask #1
08-04 18:01:26.361: E/AndroidRuntime(1229): Process: com.example.dona1click, PID: 1229
08-04 18:01:26.361: E/AndroidRuntime(1229): java.lang.RuntimeException: An error occured while executing doInBackground()
08-04 18:01:26.361: E/AndroidRuntime(1229): at android.os.AsyncTask$3.done(AsyncTask.java:300)
08-04 18:01:26.361: E/AndroidRuntime(1229): at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
08-04 18:01:26.361: E/AndroidRuntime(1229): at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
08-04 18:01:26.361: E/AndroidRuntime(1229): at java.util.concurrent.FutureTask.run(FutureTask.java:242)
08-04 18:01:26.361: E/AndroidRuntime(1229): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
08-04 18:01:26.361: E/AndroidRuntime(1229): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
08-04 18:01:26.361: E/AndroidRuntime(1229): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
08-04 18:01:26.361: E/AndroidRuntime(1229): at java.lang.Thread.run(Thread.java:841)
08-04 18:01:26.361: E/AndroidRuntime(1229): Caused by: java.lang.NullPointerException
08-04 18:01:26.361: E/AndroidRuntime(1229): at android.os.Handler.<init>(Handler.java:229)
08-04 18:01:26.361: E/AndroidRuntime(1229): at android.os.Handler.<init>(Handler.java:137)
08-04 18:01:26.361: E/AndroidRuntime(1229): at com.android.org.chromium.base.ThreadUtils.setUiThread(ThreadUtils.java:34)
08-04 18:01:26.361: E/AndroidRuntime(1229): at com.android.webview.chromium.WebViewChromiumFactoryProvider.ensureChromiumStartedLocked(WebViewChromiumFactoryProvider.java:104)
08-04 18:01:26.361: E/AndroidRuntime(1229): at com.android.webview.chromium.WebViewChromiumFactoryProvider.startYourEngines(WebViewChromiumFactoryProvider.java:259)
08-04 18:01:26.361: E/AndroidRuntime(1229): at com.android.webview.chromium.WebViewChromium.init(WebViewChromium.java:218)
08-04 18:01:26.361: E/AndroidRuntime(1229): at android.webkit.WebView.<init>(WebView.java:508)
08-04 18:01:26.361: E/AndroidRuntime(1229): at android.webkit.WebView.<init>(WebView.java:475)
08-04 18:01:26.361: E/AndroidRuntime(1229): at android.webkit.WebView.<init>(WebView.java:455)
08-04 18:01:26.361: E/AndroidRuntime(1229): at android.webkit.WebView.<init>(WebView.java:444)
08-04 18:01:26.361: E/AndroidRuntime(1229): at android.webkit.WebView.<init>(WebView.java:434)
08-04 18:01:26.361: E/AndroidRuntime(1229): at com.example.dona1click.Donar$Insertar.doInBackground(Donar.java:178)
08-04 18:01:26.361: E/AndroidRuntime(1229): at com.example.dona1click.Donar$Insertar.doInBackground(Donar.java:1)
08-04 18:01:26.361: E/AndroidRuntime(1229): at android.os.AsyncTask$2.call(AsyncTask.java:288)
08-04 18:01:26.361: E/AndroidRuntime(1229): at java.util.concurrent.FutureTask.run(FutureTask.java:237)
08-04 18:01:26.361: E/AndroidRuntime(1229): ... 4 more
08-04 18:01:27.891: I/Choreographer(1229): Skipped 344 frames! The application may be doing too much work on its main thread.
08-04 18:01:30.671: I/Choreographer(1229): Skipped 62 frames! The application may be doing too much work on its main thread.
08-04 18:01:32.691: I/Process(1229): Sending signal. PID: 1229 SIG: 9
【问题讨论】:
-
你检查 NullPointerException 了吗?