私はそれをキャンセルした後にもう一度タイマーをスケジュールできるかどうかを知りたいと思います。ここでは、http://www.coderanch.com/t/452066/java/java/Exception-timer-IllegalStateExceptionで、タイマーをキャンセルすると、新しいタイマーを作成しない限り、同じタイマーで何かをスケジュールすることはできません。また、私は、次のエラーが発生しましたjava.lang.IllegalStateException:タイマがキャンセルされました。 私は定期的にWifiスキャンを実行するタイマーを出そうとしています。しかし、私は "一時停止"したい、またはそうでなければ、スキャン後に何らかの計算を行っているときにタイマーをキャンセルすることを望みました。それだけで計算を完了し、いくつかの結果を戻した後、私はタイマーを再開します。この問題を解決するにはどうすればいいのか教えていただけますか?再販されました。キャンセル後のタイマーは「java.lang.IllegalStateException:Timer cancelled」を返します。
忘れてしまったのは、AsyncTaskを使って画像をロードした後にのみタイマーを開始するということです。
これはUIスレッドを保持しないように別のスレッドを達成しようとしています。ここで
は、プログラムの大まかな骨組みであり、時間がイメージが完全にロードされた後にのみelaspedとき、それは無線LANスキャンを実行することになり、タイマーを起動し(「load.execute(コンテキスト);」の後):放送受信のための
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.DELETE_CACHE_FILES"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
エラーの出会い:
public class LargeImageScroller extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new SampleView(this));
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {...}
@Override
public boolean onOptionsItemSelected(MenuItem item) {...}
//this is the class where the program would do all the UI and display images
private static class SampleView extends View {
public SampleView(Context context) {
:
loadMap load = new loadMap();
load.execute(context);
scanTask = new TimerTask(){
@Override
public void run() {
// TODO Auto-generated method stub
handler.post(new Runnable() {
public void run() {
wifi = (WifiManager)context.getSystemService(WIFI_SERVICE);
context.registerReceiver(receiverWifi, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
wifi.startScan();
Log.d("TIMER", "Timer set off");
}
});
}
};
scanTimer.schedule(scanTask, refreshRate);
}
public class wifiReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
List<ScanResult> sc = wifi.getScanResults();
for(int i=0; i<sc.size(); i++){
Log.e("AndroidRuntime", sc.get(i).SSID);
}
}
}
public boolean onTouchEvent(MotionEvent event) {...}
protected void onDraw(Canvas canvas) {...}
private static Drawable LoadImageFromWebOperations(String url){...}
private static Bitmap decodeFile(File f, int requiredSize){...}
private class loadMap extends AsyncTask<Context, Void, ArrayList<Bitmap>>{...}
}
は含まれていたアクセス権を使用します
10-25 05:53:04.903: ERROR/ActivityThread(1551): Activity android.wps.LargeImageScroller has leaked IntentReceiver [email protected] that was originally registered here. Are you missing a call to unregisterReceiver()?
10-25 05:53:04.903: ERROR/ActivityThread(1551): android.app.IntentReceiverLeaked: Activity android.wps.LargeImageScroller has leaked IntentReceiver [email protected] that was originally registered here. Are you missing a call to unregisterReceiver()?
10-25 05:53:04.903: ERROR/ActivityThread(1551): at android.app.ActivityThread$PackageInfo$ReceiverDispatcher.<init>(ActivityThread.java:797)
10-25 05:53:04.903: ERROR/ActivityThread(1551): at android.app.ActivityThread$PackageInfo.getReceiverDispatcher(ActivityThread.java:608)
10-25 05:53:04.903: ERROR/ActivityThread(1551): at android.app.ApplicationContext.registerReceiverInternal(ApplicationContext.java:724)
10-25 05:53:04.903: ERROR/ActivityThread(1551): at android.app.ApplicationContext.registerReceiver(ApplicationContext.java:711)
10-25 05:53:04.903: ERROR/ActivityThread(1551): at android.app.ApplicationContext.registerReceiver(ApplicationContext.java:705)
10-25 05:53:04.903: ERROR/ActivityThread(1551): at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:308)
10-25 05:53:04.903: ERROR/ActivityThread(1551): at android.wps.LargeImageScroller$SampleView$1$1.run(LargeImageScroller.java:187)
10-25 05:53:04.903: ERROR/ActivityThread(1551): at android.os.Handler.handleCallback(Handler.java:587)
10-25 05:53:04.903: ERROR/ActivityThread(1551): at android.os.Handler.dispatchMessage(Handler.java:92)
10-25 05:53:04.903: ERROR/ActivityThread(1551): at android.os.Looper.loop(Looper.java:123)
10-25 05:53:04.903: ERROR/ActivityThread(1551): at android.app.ActivityThread.main(ActivityThread.java:4363)
10-25 05:53:04.903: ERROR/ActivityThread(1551): at java.lang.reflect.Method.invokeNative(Native Method)
10-25 05:53:04.903: ERROR/ActivityThread(1551): at java.lang.reflect.Method.invoke(Method.java:521)
10-25 05:53:04.903: ERROR/ActivityThread(1551): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
10-25 05:53:04.903: ERROR/ActivityThread(1551): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
10-25 05:53:04.903: ERROR/ActivityThread(1551): at dalvik.system.NativeStart.main(Native Method)
私が無線LANのスキャンを行うためのコーディングを入れたときに、何もしていないと思われているようです。 – user918197
コードを投稿して、これまでに行ったことを確認できますか? –
は、これまでの例に基づいていたコーディングを追加しました。http://stackoverflow.com/questions/3045227/android-stop-image-scaling-down – user918197