Androidプログラミング質問スレ revision54
レス数が900を超えています。1000を超えると表示できなくなるよ。
Android 8のプッシュ通知対応したら今まで届いてた 6とか7にも来なくなった…(´・ω・`) // 1
private void kansu1(){
new Thread(new Runnable() {
@Override
public void run() {
}
}).start();
}
// 2
class kansu2 implements Runnable{
@Override
public void run() {
}
}
Runnable kansu = new kansu2();
new Thread(kansu).start();
関数の書き方で質問があります。
上記の場合、kansu1とkansu2は全く同じ処理になるのでしょうか?
使い回す時のコストも同じになるのでしょうか? 毎回threadをnewしてる時点でひどいコストだから比べる意味ない
executorなどのスレッドプールを使えというのに
そもそも途中で止められないthreadを作ったらあかん 最近は、ランナブルよりハンドラをお勧めしていたような。
アプリケーションは、JavaとAndroidフレームワークの奴隷となって、命令されたことだけ実装したら、サクッとスレッドを手放せが原則。
1と2に実行コスト面での違いに有意さはないかと。
違うのは、変数やメソッドを参照できる範囲の閉じ込め。
スコープかな sqliteに大量の初期データを入れるにはどうすればいいんですか
railsのseedみたいなことできますか データを書き込むクエリーを羅列したプログラムを組むだけでは?
あとはsqliteのDBは1ファイルなんで、初期状態を作成したDB
ファイルをコピーしても動いたと思うけど developer consoleで総インストール数が見れなくなってるんだが onclickListenerやonItemClickListenerの用法の違いを知りたいです。
また、ビューに対応したinterfaceやListenerの対応表みたいなのってありますか?
他のリスナーの用法が一覧できるとありがたいです アクティブなインストール端末数が急激に伸びてるんだがなにごと バックグラウンドでスリープさせずに定期的にウェイクアップさせる方法おしえて タッチパネルに電流を流す。
端末に穴をあけるか水いれて漏電させる。 ホームスクリーンアプリとかサービスのことじゃない。 ロリポ以降はDozeモードによって好き勝手に起動させないようになってるんだなこれが ラジオボタンに、文字列の〇や□、◇を配置したいのですが、どうやったらできますか? >>859
マジレスするとジョブずスケジューラを使うと思う。
面倒なパラメータが必要だけどね。
このあたりは、やはりJavaのフレームワークよりも洗練されてない。 >>860
ドロワーでスタイルを定めて、
ラジオ牡丹にドロワーを指定するのだと思う。
リストビューのスタイル指定が、こんな感じ。
ドロワーの定義でイメージなんかで指定すればよく、恐らくは、ステート毎に複数の宣言が必要
で、画像で指定するから、○や□みたいな記号は、そんな画像を準備する羽目になる。
いや、想定されていたら、簡単にできるのかもしれんけど。 >>862
ありがとうございます。
テキスト自体をボタン化する方法があればいいのですが textViewにonClick設定すればいいやん ちなみに、文字 "◇”をラジオボタンに設定して
非フォーカス時、フォーカス時、プッシュ時に、それぞれ色を変化させたい、とした場合、
どのようにコードを書けばいいのでしょう? background drawable selector ありがとうございます!
キーワードで調べてみます。
もう一つ質問なのですが
is2String()というメソッドってありますか? すみませんでした。is2Stringの件は解消しました。 質問させてください
〜あるクラス〜{
・・・
GPSListener gpsListener=new GPSListener();
・・・}
private class GPSListener implements LocationListener{
@override
pubulic void onLocationChanged(Location location){
・・・
}
onLocationChangedは、GPSの位置情報が格納されたlocationを引数にしていますが、呼び出し元で実引数の記載が見当たりません。
この引数は、どこで位置情報を格納されて、どこから引数を受け取っているのでしょうか?
インターフェースのLocationListenerからでしょうか? すみません、訂正です。
〜あるクラス〜{
・・・
GPSListener gpsListener=new GPSListener();
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,gpsListener);
・・・}
private class GPSListener implements LocationListener{
@override
pubulic void onLocationChanged(Location location){
・・・
}
onLocationChangedは、GPSの位置情報が格納されたlocationを引数にしていますが、呼び出し元で実引数の記載が見当たりません。
この引数は、どこで位置情報を格納されて、どこから引数を受け取っているのでしょうか?
インターフェースのLocationListenerからでしょうか? >>872
呼び出し元とはonLocationChanged()を呼んでいる箇所ということになるけど、
そういうことであればlocationManagerが位置情報が変化したタイミングで呼んでいる。 >>873
ありがとうございます
位置情報が更新されたタイミングで、ということでしたら
位置情報を把握しているlocationManegerが、逐次タイミングを図っていて
位置情報が更新された段階で、locationManagerからGPSListerのインスタンスに引数を渡している、ということなのでしょうか? ありがとうございました!
初学者なのですが、引数を持つメソッドがあるのに
実引数を持つ呼び出し元がない記述を始めて見たので理解できずに検索しまくっていました すみません、初学者で分からないことばかりです。
教えてくださって本当に助かっています。ありがとうございます。 バックグラウンドで定期的に動かす場合、どのタイマーを使ったら良いのでしょう?
1秒おきくらいにUIスレッドに戻ります。 やっぱりRxJavaになるんですかね?
標準のTimerやTimerTaskはすごく評判が悪いけども。 RxJavaってサンプルコードを見ると行数が少なすぎて、なんか怖い・・・。
RxAndroidも必須なのかな? 別に怖くないよ
Android UIスレッドを触るならRxAndroidは必要
てかAndroidUIスレッドを触るためだけのライブラリ rxAndroidはなくても頑張ればどうにかならんことはない
でもそこ頑張る意味ないから入れとけ便利だぞ rxAndroidはとりあえず入れとけって感じなのですね、ありがとうございます。
ざっくりだとこんな感じなのでしょうか?
https://qiita.com/acple@github/items/6cfee916f09632037a6e
Observableでイベントを作って送って、
.Subscribe()で受け取るって理解で良いのかな?
>>885さんの言われてる、intervalのタイマーはこれで。
http://blog.norioegi.com/rxjava-timer/ implementation "io.reactivex.rxjava2:rxjava:2.1.6"
implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'
をgradleに書いて、
Observable.interval
って書いても、intervalが見つからないです・・・。
RxJavaの良い入門サイトは無いでしょうか? RxJava 2.xの情報がここ1年ほとんど無いけど、
オワコンなの? TextView txvText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txvText = findViewById(R.id._txvText);
Observable
.interval(1, TimeUnit.SECONDS)
.subscribe(txvText.setText(););
}
1秒ずつ表示したいけど、どうやって秒を取得したら良いのかもわかりません・・・。
Intervalのサンプルも無いし、どうすればいいの? >>893
成熟期に入っただけ
むしろ当たり前として使ってる >>896
Observable
.interval(1, TimeUnit.SECONDS)
.subscribe(txvText.setText(it););
こうでしょうか?
でもitが見つからないし、そもそもitってググっても出てきませんが、どこから来たのでしょう? Observable.interval(0, 1, TimeUnit.SECONDS)
.take(10)
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.computation())
.subscribe(new Observer<Long>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(Long aLong) {
txvText.setText(aLong.toString()); }
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
}); .subscribeOn(Schedulers.computation()) はなくてもよかった >>898
0〜9まで1秒毎に動きました!
ありがとうございます!
runOnUiThreadを使わなくても表示出来るのは便利ですね。 ObserverじゃなくてConsumerを渡す(ついでにラムダ式)。
Observable.interval(0, 1, TimeUnit.SECONDS)
.take(10)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(cnt -> txvText.setText(cnt.toString())); >>897
it って、this, self みたいな、
自分自身のインスタンスを指すキーワードか? アプリ初心者です
全画面に表示する共通のメニューを作りたいです
AppCompatActivityを継承したCommonActivityでメニューを作成して、
他の画面CommonActivityを継承しましたが、メニューは出ても
子クラスのその他のテキストビュー等が出せません
SetContentViewで2つのViewを同時に出す方法はあるのでしょうか? Androidアプリ開発を学びたいのですが、今から始めるならKotlinが良いのでしょうか?
個人的に不安なのが、書籍やネット上にある情報の多くがjavaで解説されているため、詰まったときに解決できなくなってしまいそうなことです。
先にjavaによる開発を経験してからの方が賢明でしょうか? >>903
そういう共通で使う画面パーツはflagmentで実装する
activityとのやりとりにはviewmodelを使うと便利
あとcommonActivityはアンチパターンだからやめとく >>904
まず、もし2D/3Dゲームを念頭に置いてるのなら最初からUnityでよい
次に、入力フォームや表データや画像とかを表示する(または何も表示しない)ユーティリティ・ツールアプリを作りたいのなら今のところJavaで作るしかない
Kotlinは自力で記述するJavaを大幅に置き換えることができるが、他人が記述したJavaプロブラム文を意味や意図ごと置き換えることはしてくれない
もしKotlinでAndroidアプリを作りたいのなら、他人が書いたJavaプログラム文を解釈して理解するだけのJava知識は実質的には必要 >>905
ありがとうございます
flagmentを勉強します >>906
レスありがとうございます。
ツール系・ゲーム系両方やってみるつもりです。
ツール系の場合はjavaある程度触ってからやってみることにします。 ちなみにAndroid Studioで2D、3Dのゲームを制作するのは難しいのでしょうか? もうすぐandroid終了するのに今更やる意味ないでしょ >>910
Googleの言う将来とやらを真に受けてGo言語を学んだ結果はいかがでしたか >>912
超平たく言うと、GoogleはAndroidスマホ・Chromebook・スマートスピーカーあたりのOSを次期OSで統合「したい」の「ではないか」という観測がある
まあそりゃ統合はしたいだろうけど市場がついていくとは限らんし動くもの作るのにも時間がかかるし別に気にしなくてよい
あなたに一生に一つしかプログラミング言語を学べない呪いがかかっているとかならAndroidに関わるのは別なものにしたほうがいいけど、Cとか まあ今月 p が出るみたいだし、しばらくはまだ大丈夫じゃない?(大丈夫とは言っていない) Javaの有償化。openJDKにすれば回避できるてのも疑問。 >>904が1からプログラミングを学習してまともなゲーム作れるようになる頃にはandroid終了しているだろうなって話
チームで開発しててもまともなもなゲーム作るには一年はかかるのに、それを個人でやるんでしょ?
積み上げた知識は無駄にはならないけどね >>917
openで回避できるじゃん
何が疑問か分からない Androidは開発環境も昔はOracleJDK使ってたけどしばらく前からOpenJDKに変更されてるしな >>904
最新の機能をゴリゴリ使いたいならば、毎年googleが
思いつきで出してくる最新の言語を覚える必要が
あるかも
でも基本的にアプリケーションを動作させるエンジンが
Javaベースの間(今ならばART)はJavaで開発を行って
いれば大体のものが動いて作れるしサンプルも豊富
それとは別にゲームとか特定の分野のアプリを
作るならば、それ用のプラットフォーム(例えば
>>908さんが書かれたようなUnityとか)が開発されている
ことも多いのでそちらを覚えた方がよいかも
androidはなんちゃってオープンOS化がひどくなって
いるので、一部googleにべったりで仕事をしている人
以外には最新の環境を追ってもあまり意味はないよ >>921
そこが疑問なんだよ。
OpenJDKでORACLE排除できるというなら、コーティンに移行させる必要性がなくね?
コーティンに移行してもORACLE裁判のフレームワーク設計に著作権が認められた点を排除できてもいない。
コーティン使おうとimport java.*するのだから。 プラットホームビジネスというか
プラット法務ビジネス 【審議中】
∧,,∧ ∧,,∧
∧ (´・ω・) (・ω・`) ∧∧
( ´・ω) U) ( つと ノ(ω・` )
| U ( ´・) (・` ) と ノ
u-u (l ) ( ノu-u
`u-u'. `u-u' >>923
Kotlin採用は、AppleがSwift採用したのと同じで、現代的な言語に移行したかっただけだよ?
あえてKotlinなのは、Android含めたJavaとの互換性を考慮して設計されてるから
Googleが面倒なことしなくてもJavaからKotlinに移行できるようJetBrainsがお膳立てしてくれたから、それに乗っかっただけでしよ >>926
AndroidStudioのベースにIntelliJを採用したかったグーグルが付き合いでKotlin採用しただけだろ。 すみません、Androidプログラミングで
~Layoutの類が詳しく説明してあるところってありますか?
思ったところにコントロール?が配置できなくて。 RxJavaを理解していないってのもあるけども、
onNextにExecuteServiceを入れるのは無意味ってか無駄でしょうか?
ExecutorService PexecutorServiceEx = Executors.newSingleThreadExecutor();
private void subRxJavaTimer() {
Observable.interval(0, 1, TimeUnit.SECONDS)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<Long>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(Long aLong) {
PexecutorServiceEx.submit(new Runnable(){
@Override
public void run(){
// 1秒では終わらない処理
}
});
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
PexecutorServiceEx.shutdown();
}
});
} map/flatmapで同じこと出来るのですね、ありがとうございます。 すいません、本を読んで引っ込みます。
RxJavaは翔泳社の「RxJavaリアクティブプログラミング」って本を読んでおけばいいでしょうか? 現在入門書を読んでる初心者です
「ダイアログを生成するためにはビルダーを利用する」と記載されていたのですがそもこもビルダーとは何でしょうか?
自分なりに調べた結果、引数が多いと記述する際にわかりにくくなるため、コンストラクタの代わりに作るものと理解したのですがこの認識で合ってますか? 分かりにくいとかより、ダイアログも実体は通常の画面表示
なのだけど、ダイアログのような表示形式にするには通常の
画面に色々設定をほどこしてそれっぽくする必要があるので、
自動的に面倒くさい部分を隠蔽して作ってくれるクラスが
提供されているよ感じかな
ただ、想定されている形式のものしか作成できないので、
クラスのオーバーライドを行っても出来ることが限られるので
自分でダイアログボックスのクラスを作る人も多いような
気はするけど レス数が900を超えています。1000を超えると表示できなくなるよ。